2014-11-14 2 views
5

In meinem Projekt erstellen wir REST-Schnittstellen mit RestEasy und verwenden Swagger, um sie zu dokumentieren. Das Problem ist, dass dies viele Anmerkungen erfordert, und wie folgt aussehen könnte:Chaotische REST-Anmerkungen

@ApiOperation(value = "Create a person object", 
     notes = "Create a person object" + 
       "Return the newley created person object", 
     response = Person.class) 
@ApiResponses({ 
     @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "Internal server error"), 
     @ApiResponse(code = HttpStatus.SC_UNAUTHORIZED, message = "Unauthorized"), 
     @ApiResponse(code = HttpStatus.SC_PRECONDITION_FAILED, message = "Precondition failed"), 
     @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = "Bad request"), 
     @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable entity") 
}) 
@POST 
@Path("rest/v1/persons") 
@Consumes({MediaType.APPLICATION_JSON}) 
@Produces({MediaType.APPLICATION_JSON}) 
Person createPerson(
     @HeaderParam("SecurityToken") String token, 
     @ApiParam(value = "person", defaultValue = "{ \"name\": = \"Bart Simpson\", \"age\": = 9 }") Person person); 

Die meisten der Anmerkungen sehen mehr oder weniger das gleiche in allen unseren Methoden. Also kopieren und einfügen wir viel, und all diese Anmerkungen machen unsere Schnittstellen ziemlich unlesbar und es ist schwer genau zu sagen, was die Methoden machen.

Also ich frage mich, ob jemand eine Idee hat, wie wir die gleiche Funktionalität haben könnten, aber irgendwie alle diese Anmerkungen, oder zumindest einige von ihnen zu verstecken.

+0

Ich weiß nicht Swagger, aber vielleicht unterstützt es Stereotypen. Auf diese Weise können Sie möglicherweise alle @ApiXxx Annotationen auf eins reduzieren. – Thomas

+0

Ich nehme an, das Hauptproblem ist mit @ApiResponses? – Ron

+0

Unterstützt Swagger Meta-Annotationen? Das ist der übliche Spring-Ansatz. – chrylis

Antwort

0

Erstellen Sie benutzerdefinierte Anmerkungen und Anmerkungen mit Jaxrs und Swagger Annotationen. Spring RestController ist ein gutes Beispiel:

@Controller 
@ResponseBody 
public @interface RestController { 

} 

Edit: Wenn Meta-Annotationen nicht von Swagger und/oder Resteasy unterstützt wird, können Sie immer versuchen, APT als Lösung.

Verwandte Themen