【发布时间】:2019-06-10 02:18:48
【问题描述】:
使用以下 Swagger Core 的 Java Jersey 项目:
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2</artifactId>
<version>2.0.2</version>
</dependency>
文档链接转到“openapi.json”。 Swagger-UI dist ver 3.20.5 是从here 下载的。 Java代码是这样的:
@Path("/auth")
public class TestConttroller {
@GET
@Path("/{id}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response testGet(
@DefaultValue("") @HeaderParam("Authorization") String a,
@DefaultValue("") @PathParam("id") String id)
{
return Response.ok().build();
}
当从 Postman 发送请求时,一切正常。但是当从 Swagger-UI 开始时,header-param 字符串“a”是一个空字符串,而 path-param 字符串是好的。 openapi.json 中的部分在这里:
"paths" : {
"/auth/{id}" : {
"get" : {
"operationId" : "testGet",
"parameters" : [ {
"name" : "Authorization",
"in" : "header",
"schema" : {
"type" : "string",
"default" : ""
}
}, {
"name" : "id",
"in" : "path",
"required" : true,
"schema" : {
"type" : "string",
"default" : ""
}
} ],
"responses" : {
"default" : {
"description" : "default response",
"content" : {
"application/json" : { },
"application/xml" : { }
}
}
}
}
}
【问题讨论】:
-
所以你是说请求实际上进入了
getTest()方法,并且Authorization头为空? -
没错。我在 getTest() 中设置了断点并检查了两个参数。并且 Wireshark 显示请求头不在请求中。
标签: java jersey swagger swagger-ui