我是新来的招摇。目前,我正在使用swagger ui版本v2.1.4。我的API包含查询参数。进入那个参数接受JSON体。我想将此参数显示到textarea中。目前,它显示在输入标记中。另外,我想在textarea下面显示参数内容类型。我该怎么做请帮助我?
答案 0 :(得分:3)
在当前的swagger 2.0规范中,您可以不使用复杂值作为查询参数。它们可以是原始值或原始值数组。您可以直接从规范中找到更多信息:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameter-object
由于这是一个常用的功能,它将在下一版本的规范中得到支持,但该功能不将被移植到swagger 2.0工具中。
答案 1 :(得分:1)
在描述参数时添加format
例如:
parameters:
- name: key
type: string
in: query
format: textarea
在初始化swagger-ui
时添加自定义插件
// Custom plugin that adds extra stuff
const TextAreaPlugin = function() {
return {
wrapComponents: {
// add text above InfoContainer - same effect as above title
JsonSchema_string: (Original, runtime) => (props) => {
var React = runtime.React,
schema = props.schema || {},
errors = props.errors || {},
format = schema.format || "",
isDisabled = props.disabled;
errors = errors.toJS ? errors.toJS() : []
function handleOnChange(e) {
const inputValue = e.target.value;
props.onChange(inputValue)
}
if (format == "textarea") {
return React.createElement("div", null,
React.createElement("textarea", {
title: errors.length ? errors : "",
className: errors.length ? "invalid" : "",
value: props.value,
disabled: isDisabled,
onChange: handleOnChange
})
)
}
return React.createElement(Original, props);
},
}
}
};
// Begin Swagger UI call region
var ui = SwaggerUIBundle({
url: "./swagger.json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
TextAreaPlugin,
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
});
答案 2 :(得分:0)
OpenAPI 3.0现在支持对象作为查询参数。有关示例,请参见此问答:
Use object type query param in Swagger documentation