Java 使用表单url编码的jersey端点的招摇过市
我有一个jersey 2.17的DropWizard项目,有一个简单的表单提交端点:Java 使用表单url编码的jersey端点的招摇过市,java,swagger,jersey-2.0,Java,Swagger,Jersey 2.0,我有一个jersey 2.17的DropWizard项目,有一个简单的表单提交端点: @Path("forms/{form_id}") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @ApiOperation(value = "Submit a form", response = SubmittedForm.class) @ApiResponses(value = { @ApiResponse(code = 200, message =
@Path("forms/{form_id}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@ApiOperation(value = "Submit a form", response = SubmittedForm.class)
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Valid request - form submitted", response = SubmittedForm.class)
})
public Response submitForm(@PathParam("form_id") String formId, MultivaluedMap<String, String> parameters) {
...
}
@Path(“forms/{form_id}”)
@使用(MediaType.APPLICATION\u FORM\u URLENCODED)
@ApiOperation(value=“提交表单”,response=SubmittedForm.class)
@ApiResponses(值={
@ApiResponse(code=200,message=“有效请求-表单已提交”,response=SubmittedForm.class)
})
公共响应submitForm(@PathParam(“form_id”)字符串formId,多值映射参数){
...
}
我正在使用Swagger(Swagger-jersey2-jaxrs1.5.4)来记录我的API。但是,对于该端点,没有为表单参数生成文档。如果我将MultivaluedMap
更改为MultivaluedStringMap
,则会生成文档,但会将其识别为主体参数。
我不能对表单参数使用@PathParam
,因为此端点将支持多个表单定义,因此键未知
是否有任何方法可以使用Swagger正确记录表单提交端点(使用url编码的参数)?Swagger规范中不允许使用任意映射,因此在扫描操作时不会检测到该映射。根据,表单参数只支持可序列化类型。swagger规范中不允许使用任意映射,因此在扫描操作时不会检测到该映射。根据,表单参数只支持可序列化类型。不,我是说。您可以将其作为url端编码表单数据的参数,实际上可能不是。我真的不确定它将如何工作。是的,它似乎对我也不起作用-招摇过市没有改变+它打破了我的测试;)你现在有决心了吗?不,我是说。您可以将其作为url端编码表单数据的参数,实际上可能不是。我真的不确定它将如何工作。是的,它似乎对我也不起作用-招摇过市没有改变+它打破了我的测试;)您现在有解决方案了吗?谢谢您的输入,但它并没有真正回答我关于如何实现所需目标的问题,即:使用参数名称未知的Swagger文档表单提交端点。你能举一些例子说明怎么做吗?或者你是说这是不可能的?我是说在规范中,这是不允许的,因此工具中不支持。您可以随时对前端/后端进行黑客攻击以支持它,或者将您的反馈提供给规范,以便在下一版本中得到支持。OK,我创建了一个类,它实现了
可序列化
,并且有一个字段(字符串
),带有getter和setter。使用它来代替上面示例中的多值map
。我已将提供程序添加到Dropwizard
,因此它将我的类识别为可接受的application/x-www-form-urlencoded
。尽管如此,Swagger
仍将此参数识别为body
param,而不是formData
。我应该怎么做才能将此参数识别为formData
?看看如何注释formData
类型:有点希望consumes=MediaType。应用程序\u FORM\u URLENCODED
可以为未注释的参数做些什么。感谢您的输入,但它并没有真正回答我关于如何实现所需的问题,即:使用参数名称未知的Swagger文档表单提交端点。你能举一些例子说明怎么做吗?或者你是说这是不可能的?我是说在规范中,这是不允许的,因此工具中不支持。您可以随时对前端/后端进行黑客攻击以支持它,或者将您的反馈提供给规范,以便在下一版本中得到支持。OK,我创建了一个类,它实现了可序列化
,并且有一个字段(字符串
),带有getter和setter。使用它来代替上面示例中的多值map
。我已将提供程序添加到Dropwizard
,因此它将我的类识别为可接受的application/x-www-form-urlencoded
。尽管如此,Swagger
仍将此参数识别为body
param,而不是formData
。我应该怎么做才能将此参数识别为formData
?看看如何注释formData
类型:有点希望consumes=MediaType。应用程序\u FORM\u URLENCODED
可以为未注释的参数做些什么。谢谢