.NET Framework 4.8
Postman Version7.19.1
Swashbuckle 5.6.0,nugget包
我有一个使用Swagger(Swashbuckle)的大API,我想将开放的API模式作为一个集合导入到Postman中。
在继续{myUrl}/swager/docs/v1
并将模式粘贴到Postman中后,我注意到我的所有Post请求都“中断”了。当转到正文
时,它显示为“application/x-www-form-urlencoded”
,而不是原始的JSON
正文。
相反,它看起来是这样的:
{
"swagger": "2.0",
"info": {
"version": "v1",
"title": "My API"
},
"host": "localhost:51209",
"schemes": [
"http"
],
"paths": { },
"definitions": { }
}
路径
和定义
不是空的,它们包含大量API调用,这就是为什么我将从它们中选择一个POST方法,因为它们都有相同的问题。
下面是paths
对象和属性“consumes”
的一个示例:
"/api/MyController/MyMethod": {
"consumes": [
"application/json",
"text/json",
"application/xml",
"text/xml",
"application/x-www-form-urlencoded"
]
}
问题似乎出在consumes
对象属性中,该属性有一个字符串数组作为值,其中一个字符串是“application/x-www-form-urlencoded”
。
[HttpPost]
[Route("MyMethod")]
public IHttpActionResult MyMethod(List<JobHeaderInputModel> jobHeaderList)
我看到了这篇令人惊叹的文章,并在那里实现了解决方案:
创建了自定义属性:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class SwaggerConsumesAttribute : Attribute
{
public SwaggerConsumesAttribute(params string[] contentTypes)
{
this.ContentTypes = contentTypes;
}
public IEnumerable<string> ContentTypes { get; }
}
之后,为Swagger创建OperationFilter
类:
public class ConsumesOperationFilter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
var attribute = apiDescription.GetControllerAndActionAttributes<SwaggerConsumesAttribute>().SingleOrDefault();
if (attribute == null)
{
return;
}
operation.consumes.Clear();
operation.consumes = attribute.ContentTypes.ToList();
}
}
c.OperationFilter<ConsumesOperationFilter>();
spring-cloud-starter-openfeign 2.1.1.发行版 我还尝试添加假表单依赖项和@param而不是@requestparam,但没有成功。
在java中,如何使用。我不明白如何发送带有键值的正文,如上面的屏幕截图所示。 我尝试过以下代码: 但是在回复中,我没有收到正确的数据。
是否可以生成一个包含application/json和x-www-form-urlencoded请求体示例的招摇过市UI页面(以及redoc)?我可以得到application/json的示例,但在swagger/redoc UI中选择x-www-form-urlencoded作为请求类型时却没有。 我将以下装饰器用于“create”方法(在ModelViewSet中) 其中 MySerializ
我已经通过邮递员发送了标题Content-Type=Application/x-www-form-urlencoded的POST请求。 我得到了PHP中的数组,格式如下。我无法在PHP页面中访问。我该如何解决这个问题? 结果是
我正在使用OpenAPI生成器生成Spring REST API。下面是一个片段: 它生成一个Spring REST API方法(只是一个有趣的方法): 然后,我想使用从集成测试中调用它: 我得到一个错误: 我对服务器端进行了一点调试,看起来它需要一个多部分的内容,但我不明白为什么。 内容类型为application/x-www-form-urlencoded的Http Post请求在Spring