2014-11-14 24 views
5

Projemde RestEasy kullanarak REST arabirimleri oluşturuyor ve bunları belgelemek için Swagger kullanıyoruz. Sorun bu kadar açıklamaya gerektirir ve aşağıdaki gibi görünebilir şudur:Dağınık REST ek açıklamaları

@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); 

ek açıklamaların çoğu tüm yöntemlerde aynı veya daha az görünüyor. Bu yüzden çok kopyalayıp yapıştırıyoruz ve bu ek açıklamaların tümü arayüzlerimizi oldukça okunamaz hale getiriyor ve yöntemlerin ne yaptığını tam olarak söylemek zor.

Bu yüzden, birisinin aynı işlevselliğe nasıl sahip olabileceğimize dair bir fikri olup olmadığını, ancak bu açıklamaların tümünü ya da en azından bazılarını gizlemeyi düşünerek merak ediyorum.

+0

Swagger'ı bilmem ama belki de stereotipleri destekliyor. Bu şekilde, tüm @ApiXxx ek açıklamalarını bir taneye indirgeyebilirsiniz. – Thomas

+0

Ana sorunun @ApiResponses ile olduğunu muyum? – Ron

+0

Swagger meta-ek açıklamaları destekliyor mu? Bu her zamanki Bahar yaklaşımı. – chrylis

cevap

0

Özel ek açıklamalar ve bunları jaxrs ve swagger ek açıklamaları ile ek açıklamaları oluşturun. Bahar en RestController iyi bir örnektir:

@Controller 
@ResponseBody 
public @interface RestController { 

} 

Düzenleme: meta-ek açıklamalar Swagger ve/veya RestEasy tarafından desteklenmiyorsa, her zaman bir çözüm olarak APT deneyebilirsiniz.

İlgili konular