如何让 ServiceStack 的 Swagger 实现使用 XML 内容类型?
How can I get ServiceStack's Swagger implementation to use XML content-type?
我有一个非常基本的 ServiceStack 实验,它使用 Swagger 生成文档。该服务可用于多种不同的内容类型(XML、JSON 等):
Default metadata page
但是,我只能在Swagger UI中使用content-type/json。是否有 configuration/attribute 我可以使用,以便我可以测试其他内容类型?
Swagger UI
您无法更改 Content Type Swagger 使用的内容,但 ServiceStack 服务提供 automatic Content Negotiation 因此您可以使用 .xml
扩展名查询 XML,例如:
- /query.xml
或在?format=
查询字符串中指定格式:
- /query?format=xml
或者通过添加 Accept: application/xml
HTTP 请求 Header。
Swagger 不允许更改内容类型,但您可以使用更通用的工具,如 ServiceStack's Postman support 或 Fiddler。
修改 Swagger 响应
我刚刚 added a change in the latest v4.0.53 of ServiceStack that's now available on MyGet 让您可以更改 ServiceStack 返回的 Swagger 响应,您可以使用它来填充 consumes 和 produces 在 API 声明和操作级别:
Plugins.Add(new SwaggerFeature {
ApiDeclarationFilter = x =>
x.Consumes = x.Produces = new[] { MimeTypes.Json, MimeTypes.Xml }.ToList(),
OperationFilter = x =>
x.Consumes = x.Produces = new[] { MimeTypes.Json, MimeTypes.Xml }.ToList()
});
但这看起来对 Swagger 没有太大影响 UI,我能看到的唯一变化是 body POST 请求中的参数现在允许您发送 XML:
在 Swagger 规范(由 ServiceStack 生成)中,您需要为端点更新 produces
以包含 "application/xml" 和 "application/json" 如果您希望两者都出现在下拉列表中大摇大摆的菜单-ui.
这是一个例子:
"produces": [
"application/json",
"application/xml"
],
OpenAPI 规范 produces
:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#fixed-fields
我有一个非常基本的 ServiceStack 实验,它使用 Swagger 生成文档。该服务可用于多种不同的内容类型(XML、JSON 等): Default metadata page
但是,我只能在Swagger UI中使用content-type/json。是否有 configuration/attribute 我可以使用,以便我可以测试其他内容类型? Swagger UI
您无法更改 Content Type Swagger 使用的内容,但 ServiceStack 服务提供 automatic Content Negotiation 因此您可以使用 .xml
扩展名查询 XML,例如:
- /query.xml
或在?format=
查询字符串中指定格式:
- /query?format=xml
或者通过添加 Accept: application/xml
HTTP 请求 Header。
Swagger 不允许更改内容类型,但您可以使用更通用的工具,如 ServiceStack's Postman support 或 Fiddler。
修改 Swagger 响应
我刚刚 added a change in the latest v4.0.53 of ServiceStack that's now available on MyGet 让您可以更改 ServiceStack 返回的 Swagger 响应,您可以使用它来填充 consumes 和 produces 在 API 声明和操作级别:
Plugins.Add(new SwaggerFeature {
ApiDeclarationFilter = x =>
x.Consumes = x.Produces = new[] { MimeTypes.Json, MimeTypes.Xml }.ToList(),
OperationFilter = x =>
x.Consumes = x.Produces = new[] { MimeTypes.Json, MimeTypes.Xml }.ToList()
});
但这看起来对 Swagger 没有太大影响 UI,我能看到的唯一变化是 body POST 请求中的参数现在允许您发送 XML:
在 Swagger 规范(由 ServiceStack 生成)中,您需要为端点更新 produces
以包含 "application/xml" 和 "application/json" 如果您希望两者都出现在下拉列表中大摇大摆的菜单-ui.
这是一个例子:
"produces": [
"application/json",
"application/xml"
],
OpenAPI 规范 produces
:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#fixed-fields