在Swagger的查询参数中添加textarea

时间:2016-05-10 11:37:45

标签: swagger swagger-ui

我是新来的招摇。目前,我正在使用swagger ui版本v2.1.4。我的API包含查询参数。进入那个参数接受JSON体。我想将此参数显示到textarea中。目前,它显示在输入标记中。另外,我想在textarea下面显示参数内容类型。我该怎么做请帮助我?

3 个答案:

答案 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