使用 spring 隐藏 Swagger 请求正文中的类属性

问题描述 投票:0回答:3

我有一个班级用户

public class User {

Integer id;
String  name;
String  department;

.... }

我的控制器

@RestController
@RequestMapping("/user")
public class userResource {

@Autowired
UserRepository userRepository;

@Autowired
UserService userService;

@PostMapping(value = "/")
public ResponseEntity<StatusResponse> createUser(
         @RequestBody   User user) {
.....}

在 Swagger 中它显示了

{
"department": "string",
"id": 0,
"name": "string"
 }

我想在这里隐藏现场部门。我已经使用了@ApiModelProperty(hidden = true)

但我也想在其他地方使用这个实体,并想向部门字段展示这是如何可能的?

java json spring-boot jackson swagger
3个回答
0
投票
 public class User {
     Integer id;
     String  name;

     @JsonIgnore
     String  department;
 }

0
投票

我今天也遇到了同样的问题。这是我的解决方案。

用户实体:

public class User {
    public String username;
    public String password;
}

测试控制器:

@ResponseBody
    @PostMapping("/test")
    @Operation(description = "SwaggerTest")
    @io.swagger.v3.oas.annotations.parameters.RequestBody(content = @Content(mediaType = "application/json", examples = @ExampleObject("{username: 212}")))
    @ApiResponse(content = @Content(mediaType = "application/json", examples = @ExampleObject("{username: 212}")))
    public User test(@RequestBody User user){
        return user;
    }

结果如下:

之前:

通过添加@io.swagger.v3.oas.annotations.parameters.RequestBody和@ApiResponse并设置其content字段,您可以自定义在swagger中显示的内容。

以上所有内容均基于 springdoc-openapi-ui 库。


0
投票

@n1nja88888,您刚刚更改了默认示例。这里的问题是使用 Swagger 注释选择性地隐藏

department
字段。

© www.soinside.com 2019 - 2024. All rights reserved.