2014-11-14 3 views
5

मेरी प्रोजेक्ट में हम RestEasy का उपयोग करके आरईएसटी इंटरफेस बनाते हैं और उन्हें दस्तावेज करने के लिए Swagger का उपयोग करते हैं। समस्या यह है कि इस में कई एनोटेशन आवश्यकता है, और ऐसा दिखाई दे सकता है:मेसी आरईएसटी एनोटेशन

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

एनोटेशन के अधिकांश कम या ज्यादा हमारे सभी तरीकों में ही दिखते हैं। इसलिए हम बहुत प्रतिलिपि बनाते हैं और पेस्ट करते हैं, और इन सभी टिप्पणियों से हमारे इंटरफेस काफी पढ़े जा सकते हैं और यह कहना मुश्किल है कि विधियां क्या कर रही हैं।

तो मुझे आश्चर्य है कि अगर किसी के पास कोई विचार है कि हम एक ही कार्यक्षमता कैसे प्राप्त कर सकते हैं लेकिन किसी भी तरह से उन सभी एनोटेशन को छुपाएं, या कम से कम उनमें से कुछ को छुपाएं।

+0

मुझे स्वैगर नहीं पता लेकिन शायद यह रूढ़िवाद का समर्थन करता है। इस तरह आप उन सभी @ApiXxx एनोटेशन को कम करने में सक्षम हो सकते हैं। – Thomas

+0

मुझे लगता है कि मुख्य मुद्दा @ApiResponses के साथ है? – Ron

+0

क्या स्वैगर मेटा-एनोटेशन का समर्थन करता है? यह सामान्य वसंत दृष्टिकोण है। – chrylis

उत्तर

0

कस्टम एनोटेशन बनाएं और उन्हें जाक्सर्स और स्वैगर एनोटेशन के साथ एनोटेट करें। वसंत के RestController एक अच्छा उदाहरण है:

@Controller 
@ResponseBody 
public @interface RestController { 

} 

संपादित करें: मेटा-एनोटेशन स्वैगर और/या RestEasy द्वारा समर्थित नहीं है, तो आप हमेशा APT एक समाधान के रूप कोशिश कर सकते हैं।