gpt4 book ai didi

java - Swagger 添加 Controller 的私有(private)字段作为请求的主体参数

转载 作者:行者123 更新时间:2023-12-01 11:00:05 25 4
gpt4 key购买 nike

我们有一个带有 dao 和 GET 端点的简单 Controller :

@Api("users")
@Named
@Path("/users")
@Produces(MediaType.APPLICATION_JSON)
public class UserController {

private final UserDao userDao;

@Inject
public AdController(KeywordsDao userDao) {
this.userDao = userDao;
}

@GET
public Response getUser(@QueryParam("id") int userId) {
User res = userDao.getUser(userId);
return Response.ok(res).build();
}
}

class User {
@JsonProperty
private int id;
@JsonProperty
private String name;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

演示问题的 swagger.json 部分:

...

"paths" : {
"/users" : {
"get" : {
"tags" : [ "users" ],
"operationId" : "getUsers",
"produces" : [ "application/json" ],
"parameters" : [
{
"in" : "body",
"name" : "body",
"required" : false,
"schema" : {
"$ref" : "#/definitions/UserDao"
}
}, {
"name" : "userId",
"in" : "query",
"required" : false,
"type" : "integer",
"format" : "int32"
} ]
...

有什么想法可以摆脱这些“隐式”参数吗?它们在 Swagger UI 中看起来真的很困惑。

项目总体配置:RESTEasy 3.0.11 + spring-context 3.2.14 + swagger-jaxrs 1.5.4。

Swagger 使用 BeanConfigApiListingResource 进行配置,它们在应用程序上下文中声明:

....
<bean class="io.swagger.jaxrs.listing.ApiListingResource"/>
<bean id="beanConfig" class="io.swagger.jaxrs.config.BeanConfig">
<property ...
</bean>
....

最佳答案

事实证明我使用的是 swagger-jaxrs 1.5.0 而不是 1.5.4。这个bug已在 1.5.1 中修复。

关于java - Swagger 添加 Controller 的私有(private)字段作为请求的主体参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33411882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com