如何在swagger中为XML参数提供示例

如何在swagger中为XML参数提供示例,swagger,swashbuckle,Swagger,Swashbuckle,我正在使用Swashback 5.6.0和Swashback.Examples.3.5.1来记录WebApi2项目。我有一个使用XML主体并返回文本响应的操作。我希望文档中包含一个XML输入示例,例如 我的招摇过市输出如下,只是出于这个问题的目的,我在comsumes属性中添加了内容类型application/json。实际上,我只想允许application/xml和text/xml 当我大摇大摆地看待这一点时,我看到: 当选择参数content typeapplication/xml时,我

我正在使用
Swashback 5.6.0
Swashback.Examples.3.5.1
来记录WebApi2项目。我有一个使用XML主体并返回文本响应的操作。我希望文档中包含一个XML输入示例,例如

我的招摇过市输出如下,只是出于这个问题的目的,我在
comsumes
属性中添加了内容类型
application/json
。实际上,我只想允许
application/xml
text/xml

当我大摇大摆地看待这一点时,我看到:

  • 当选择参数content type
    application/xml
    时,我会得到一个带有我的模型名的生成的xml示例,即

  • 当选择参数content type
    application/json
    时,我将获得所需的示例输入

选择参数内容类型
application/xml
时,如何获取示例输入

{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "Sample"
  },
  "host": "localhost:63434",
  "schemes": [
    "http"
  ],
  "paths": {
    "/sampleXml/": {
      "post": {
        "tags": [
          "xmlSample"
        ],
        "summary": "XML sample.",
        "description": "Post XML sample",
        "operationId": "Xml_Post",
        "consumes": [
          "application/xml",
          "application/json",
          "text/xml",
        ],
        "produces": [
          "text/plain"
        ],
        "parameters": [
          {
            "name": "xmlContent",
            "in": "body",
            "description": "The content of the XML document.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/XmlModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          },
        }
      }
    }
  },
  "definitions": {
    "XmlModel": {
      "type": "object",
      "properties": {},
      "example": "<SampleXml><!-- example XML --></SampleXml>"
    }
  }
}
{
“招摇过市”:“2.0”,
“信息”:{
“版本”:“v1”,
“标题”:“样本”
},
“主机”:“本地主机:63434”,
“计划”:[
“http”
],
“路径”:{
“/sampleXml/”:{
“职务”:{
“标签”:[
“xmlSample”
],
“摘要”:“XML示例”,
“说明”:“Post XML示例”,
“操作ID”:“Xml_Post”,
“消费”:[
“应用程序/xml”,
“应用程序/json”,
“文本/xml”,
],
“生产”:[
“文本/纯文本”
],
“参数”:[
{
“名称”:“xmlContent”,
“in”:“body”,
“说明”:“XML文档的内容”,
“必需”:正确,
“模式”:{
$ref:“#/definitions/XmlModel”
}
}
],
“答复”:{
"200": {
“说明”:“确定”,
“模式”:{
“类型”:“字符串”
}
},
}
}
}
},
“定义”:{
“XmlModel”:{
“类型”:“对象”,
“属性”:{},
“示例”:”
}
}
}

要将根XML标记从
更改为
,请添加到架构定义中:

“定义”:{
“XmlModel”:{
“类型”:“对象”,
“xml”:{
“名称”:“SampleXml”
}
}
}
这将在Swagger UI中生成以下示例XML:


如果添加属性定义:

“定义”:{
“XmlModel”:{
“类型”:“对象”,
“xml”:{
“名称”:“SampleXml”
},
“财产”:{
“id”:{
“类型”:“整数”,
“例子”:7,
“xml”:{
“属性”:true
}
},
“foo”:{
“类型”:“字符串”,
“示例”:“条”
}
}
}
}
您的XML示例将包括相应的元素:


酒吧
但是,如果希望文本字符串
包含
!--注释--
,这是不可能的

更新:Swagger UI仅支持在响应示例中使用文字XML字符串:

“响应”:{
"200": {
“说明”:“确定”,
“模式”:{
“类型”:“字符串”
},
“例子”:{
“应用程序/xml”:”
}
}
}

但不是在请求正文示例中。

我认为这是SwaggerUI中的一个错误,我在最新版本上测试了您的swagger.json,问题仍然存在:感谢您的回复。我想要的是一个文本XML字符串——该字符串不包含注释,但需要匹配一个特定于应用程序的模式,我没有显示该模式,因为它与问题无关。我的目标是通过复制示例XML,从Swagger UI中冒烟测试API。