Я получил странное поведение, когда я анализирую JSON и помещаю его в переменную, он не работает при создании Swagger-UI, но если я выполняю JSON .parse () непосредственно внутри Swagger- Создание пользовательского интерфейса работает нормально, как показано во втором примере.
Не работает:
Vue.component('my-swagger', {
name: 'myswagger',
mounted() {
var swag = JSON.parse("{\"swagger\":\"2.0\",\"info\":{\"title\":\"SampleAPI\",\"description\":\"APIdescriptioninMarkdown.\",\"version\":\"1.0.0\"},\"host\":\"api.example.com\",\"basePath\":\"\/v1\",\"schemes\":[\"https\"],\"paths\":{\"\/users\":{\"get\":{\"summary\":\"Returnsalistofusers.\",\"description\":\"OptionalextendeddescriptioninMarkdown.\",\"produces\":[\"application\/json\"],\"responses\":{\"200\":{\"description\":\"OK\"}}}}}}")
window.onload = function() {
const ui = this.SwaggerUIBundle({
dom_id: '#swagger-ui',
spec: this.swag,
deepLinking: false,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
],
layout: "StandaloneLayout"
});
window.ui = ui
}
},
template: `
<div id="swagger-ui"></div>
`
})
Работает:
Vue.component('my-swagger', {
name: 'myswagger',
mounted() {
window.onload = function() {
const ui = this.SwaggerUIBundle({
dom_id: '#swagger-ui',
spec: JSON.parse("{\"swagger\":\"2.0\",\"info\":{\"title\":\"SampleAPI\",\"description\":\"APIdescriptioninMarkdown.\",\"version\":\"1.0.0\"},\"host\":\"api.example.com\",\"basePath\":\"\/v1\",\"schemes\":[\"https\"],\"paths\":{\"\/users\":{\"get\":{\"summary\":\"Returnsalistofusers.\",\"description\":\"OptionalextendeddescriptioninMarkdown.\",\"produces\":[\"application\/json\"],\"responses\":{\"200\":{\"description\":\"OK\"}}}}}}"),
deepLinking: false,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
],
layout: "StandaloneLayout"
});
window.ui = ui
}
},
template: `
<div id="swagger-ui"></div>
`
})