Swagger 无法为 HTTP "PATCH" 生成文档
Swagger Is not able to produce documentation for HTTP "PATCH"
我已经关注了下面的
博客条目:
http://kingsfleet.blogspot.co.uk/2014/02/transparent-patch-support-in-jax-rs-20.html
https://github.com/jersey/jersey/tree/2.6/examples/http-patch
创建端点以支持 Jersey 2.6 中的 HTTP "PATCH" 方法
依赖版本:
-Jersey: 2.6
-swagger-jersey2-jaxrs_2.10: 1.3.12
有问题吗?
为什么 Patch
端点没有被列为 swagger ui 文档的一部分?
分析:
如果我使用此注释进行注释,则会生成该端点的文档,但不会进行交互。
@com.wordnik.swagger.jaxrs.PATCH
配置
JerssyApplicationInitializer
packages(true, "com.test.account.endpoint", "com.wordnik.swagger.jaxrs.json");
//Swagger Configuration
register(new ApiListingResourceJSON(), 10);
register(JerseyApiDeclarationProvider.class);
register(JerseyResourceListingProvider.class);
//Genson Converter
register(GensonJsonConverter.class, 1);
register(createMoxyJsonResolver());
我不确定,如果我遗漏了什么,任何帮助或 guide 都会有帮助。
补丁方法文档:
public static final String PATCH_MEDIA_TYPE = "application/json-patch+json";
@PATCH
//@com.wordnik.swagger.jaxrs.PATCH
@PreAuthorize(userAuthenticationRequire=true)
@Consumes(PATCH_MEDIA_TYPE)
@Path("{id: .\d+}")
@ApiOperation(value = "Update Client Details in UIM System."
, response = State.class
, notes="Requesting User, should be the owner of the Client."
, consumes = PATCH_MEDIA_TYPE)
@ApiResponses({
@ApiResponse(code = _401, message = "If the access token is invalid.", response = String.class),
@ApiResponse(code = _498, message = "If the access token is expired.", response = String.class),
@ApiResponse(code = _420, message = "If Provided Input is not valid according to requirment specification."),
@ApiResponse(code = _404, message = "If no client/app Found."),
@ApiResponse(code = _200, message = "If Client Account has been Updated successfully. ", response=String.class)
})
public State updateClientDetails(@ApiParam(value="Client Id to be Updated.", required=true) @PathParam(CLIENT_ID) String clientId
, @ApiParam(value = "Updated field and Value.", required = true) final State newState){
//LOG.info("[ENTRY]- Received requst for updating Client {} from System.", clientId);
System.out.println("----->" + someBean.test());
//LOG.info("[EXIT]- Client Id {} Updation has been completed.", clientId);
Test t = new Test();
t.name = "Hello Test";
System.out.println(t.name);
return newState;
}
看看你的index.html。控制哪些 HTTP 操作是交互的——通过将其更改为:
window.swaggerUi = new SwaggerUi({
url: url,
dom_id: "swagger-ui-container",
supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
您将在PATCH方法上进行互动:
我已经关注了下面的
博客条目:
http://kingsfleet.blogspot.co.uk/2014/02/transparent-patch-support-in-jax-rs-20.html
https://github.com/jersey/jersey/tree/2.6/examples/http-patch
创建端点以支持 Jersey 2.6 中的 HTTP "PATCH" 方法
依赖版本:
-Jersey: 2.6
-swagger-jersey2-jaxrs_2.10: 1.3.12
有问题吗?
为什么 Patch
端点没有被列为 swagger ui 文档的一部分?
分析:
如果我使用此注释进行注释,则会生成该端点的文档,但不会进行交互。
@com.wordnik.swagger.jaxrs.PATCH
配置
JerssyApplicationInitializer
packages(true, "com.test.account.endpoint", "com.wordnik.swagger.jaxrs.json");
//Swagger Configuration
register(new ApiListingResourceJSON(), 10);
register(JerseyApiDeclarationProvider.class);
register(JerseyResourceListingProvider.class);
//Genson Converter
register(GensonJsonConverter.class, 1);
register(createMoxyJsonResolver());
我不确定,如果我遗漏了什么,任何帮助或 guide 都会有帮助。
补丁方法文档:
public static final String PATCH_MEDIA_TYPE = "application/json-patch+json";
@PATCH
//@com.wordnik.swagger.jaxrs.PATCH
@PreAuthorize(userAuthenticationRequire=true)
@Consumes(PATCH_MEDIA_TYPE)
@Path("{id: .\d+}")
@ApiOperation(value = "Update Client Details in UIM System."
, response = State.class
, notes="Requesting User, should be the owner of the Client."
, consumes = PATCH_MEDIA_TYPE)
@ApiResponses({
@ApiResponse(code = _401, message = "If the access token is invalid.", response = String.class),
@ApiResponse(code = _498, message = "If the access token is expired.", response = String.class),
@ApiResponse(code = _420, message = "If Provided Input is not valid according to requirment specification."),
@ApiResponse(code = _404, message = "If no client/app Found."),
@ApiResponse(code = _200, message = "If Client Account has been Updated successfully. ", response=String.class)
})
public State updateClientDetails(@ApiParam(value="Client Id to be Updated.", required=true) @PathParam(CLIENT_ID) String clientId
, @ApiParam(value = "Updated field and Value.", required = true) final State newState){
//LOG.info("[ENTRY]- Received requst for updating Client {} from System.", clientId);
System.out.println("----->" + someBean.test());
//LOG.info("[EXIT]- Client Id {} Updation has been completed.", clientId);
Test t = new Test();
t.name = "Hello Test";
System.out.println(t.name);
return newState;
}
看看你的index.html。控制哪些 HTTP 操作是交互的——通过将其更改为:
window.swaggerUi = new SwaggerUi({
url: url,
dom_id: "swagger-ui-container",
supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
您将在PATCH方法上进行互动: