当前位置: 首页 > 知识库问答 >
问题:

招摇过市:对body参数使用JAX-RS映射

林修真
2023-03-14

我试图在我们现有的JAX-RS REST项目中设置Swagger来记录我们的API。

对于接收JSON请求体的操作,我们一直使用以下习惯用法:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value="Some operation")
@ApiImplicitParams(value={
        @ApiImplicitParam(name="val1", value="Input 1", dataType="string", paramType="body"),
        @ApiImplicitParam(name="val2", value="Input 2", dataType="string", paramType="body")
})
public Response login(Map<String, Object> request) { }

通过获取映射,JAX-RS将JSON对象映射到映射中,以按键名访问值。这样做很好,避免了每次这样的操作都需要一个模型。

但是,Swagger会扫描这些操作,并自动将Map作为请求参数。我的意图是,我在@ApiInverityParams注释中正确定义参数。有没有办法让Swagger忽略Map,而只使用@ApiInverityParams中定义的参数?

共有1个答案

凌宏大
2023-03-14

我遇到了同样的问题并使用了

public Response login(@Context Map<String, Object> request) { }

这实际上隐藏了输出的实际参数。注释来自

javax.ws.rs.core
 类似资料:
  • 我的pom.xml 招摇过市配置 服务器日志 它说映射: 但这些都不起作用(404): 如果我使用sping-fox较低版本,那么我将在我的日志中得到它已映射{[/v2/api-docs}],方法=[GET]。但是,我看不到在那里生成的任何json。

  • 我试图在我的微服务项目中生成一个单独的招摇过市,在Api网关中将所有服务招摇过市聚合成一个单独的招摇过市。为了实现这一点,我将遵循下一个教程https://objectpartners.com/2017/09/28/aggregate-services-into-a-single-swagger 这里的问题是,当我尝试设置绝对URL时,我收到的输出是未能加载API定义。未定义的http://loc

  • 问题内容: 我已经读过我可以创建一个实现,将抛出的应用程序异常映射到对象。 我创建了一个简单的示例,如果在保留对象时电话长度大于20个字符,则会引发异常。我期望将异常映射到HTTP 400(错误请求)响应;但是,我收到HTTP 500(内部服务器错误),但有以下异常: 我想念什么?任何意见是极大的赞赏。 异常映射器: 异常类: 实体类: 服务: 问题答案: InvalidDataException

  • 问题内容: 我有一个JAX-RS资源,它的参数如JSON字符串所示: 在这里使用JSON的原因是,在实际用例中查询对象可能非常复杂。 我想将JSON字符串转换为Java对象,在示例中为dto: JAX-RS是否支持从作为查询参数传递的JSON到Java对象的这种转换? 问题答案: 是的,您可以执行此操作,但是您需要自己编写转换代码。幸运的是,这很容易,您只需要编写一个具有公共构造函数的类即可进行转

  • 我需要将带有多个可选参数的路径映射到我的endpoint

  • 我正在努力理解如何为API网关使用Swagger扩展: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html 我正在通过AWS CLI使用导入/导出RestAPI,但在命令行中找不到如何使用它们的任何示例。你能帮忙吗? 谢谢