我有 2 个相似的端点。
@GetMapping("/api/entity")
@SecurityRequirement(name = "Basic Authentication")
public List<EntityResponseDTO> getAll() { return entityService.getEntities(); }
@GetMapping("/api/entity")
public List<EntityResponseDTO> getAllInCity(@RequestParam("city") String city) { return entityService.getEntities(city); }
我还使用 Swagger 来生成 API 文档。这两个端点的问题是 Swagger 无法真正识别第一个端点。或者,更准确地说,它将它们连接起来。
当我打开 Swagger UI 时,我只看到其中之一:
GET /api/entity
。它既是安全的(因为第一个映射具有 @SecurityRequirement
)又是参数化的(第二个映射是 @RequestParam
)。问题是该参数在 UI 中设置为 required
,否则我无法设置它。我已经尝试过 @Parameter
注释,但似乎无法使其工作。
我希望能够 - 在 Swagger UI 中,显然 - 以授权用户身份查询所有实体,并以未登录用户身份查询城市中的所有实体。
将
@RequestParam
的 required
字段设置为 false 可以解决此问题。