2015-03-30 6 views
6

मैं स्प्रिंग एमवीसी (स्प्रिंग बूट के माध्यम से) का उपयोग कर रहा हूं और swagger-spring-mvc लाइब्रेरी का उपयोग करके स्वैगर एपीआई दस्तावेज एकीकृत किया है।@ApiModelProperty डेटा को कैसे सेट करें Swagger प्रलेखन के लिए स्ट्रिंग पर टाइप करें

मैं एक वर्ग है कि कुछ इस तरह दिखता है:

@ApiModel 
public class CartItem { 
    ... 
    private Money listPrice; // joda money class 

    @JsonSerialize(using = ToStringSerializer.class) 
    @ApiModelProperty(required = true, dataType = "java.lang.String") 
    public Money getListPrice() { 
     return listPrice; 
    } 
    ... 
} 

जब से मैं इस क्षेत्र के लिए ToStringSerializer उपयोग कर रहा हूँ, यह JSON में listPrice.toString लौटा रहा है, दूसरे शब्दों में:

{ 
    "listPrice": "USD 10.50" 
} 

हालांकि, swagger दस्तावेज डेटा टाइप = "java.lang.String" का सम्मान नहीं कर रहा है। यह प्रतिक्रिया मॉडल के रूप में दिखाता है:

"CartItem": { 
    "description": "", 
    "id": "CartItem", 
    "properties": { 
     "listPrice": { 
      "required": false, 
      "type": "Money" 
     } 
    } 
} 

मैं क्षेत्र के साथ-साथ विधि पर @ApiModelProperty एनोटेशन डालने की कोशिश की है, और दोनों ही मामलों में required क्षेत्र सम्मान दिया जाता है, लेकिन dataType क्षेत्र नजरअंदाज कर दिया है। मैंने डेटा टाइप के लिए "स्ट्रिंग", "स्ट्रिंग" और "java.lang.String" का उपयोग करने का भी प्रयास किया है, लेकिन उनमें से कोई भी काम नहीं कर पाया है।

क्या मुझे कुछ याद आ रही है, या क्या यह सिर्फ swagger-spring-mvc लाइब्रेरी में एक बग है?

उत्तर

4

यह बताता है कि dataType को स्वैगर स्प्रिंग एमवीसी लाइब्रेरी के वर्तमान संस्करण में पूरी तरह से अनदेखा किया गया है। मैं यहाँ उस पर एक छोटी चर्चा पाया:

https://github.com/springfox/springfox/issues/602

ऐसा लगता है कि यह संस्करण 2 में शामिल किया जा सकता है कि बाहर है एक बार।

संपादित करें: हालांकि संस्करण 2 का कहना है कि यह डेटा टाइप का समर्थन करता है, यह इस समय काम नहीं कर रहा है। मेरी जरूरतों के लिए एक बेहतर दृष्टिकोण इस तरह एक सीधा मॉडल प्रतिस्थापन के साथ प्रलेखन सेटिंग्स कॉन्फ़िगर करने के लिए है:

@Bean 
public Docket swaggerSpringMvcPlugin() { 
    return new Docket(DocumentationType.SWAGGER_2) 
      .directModelSubstitute(Money.class, String.class); 
} 
+1

आप सही है कि यह अब 2.0.x में समर्थित (2.0.0-स्नैपशॉट में उपलब्ध है) है, कुछ कैविएट्स के साथ । डेटा प्रकार को वैध पैकेज योग्य वर्ग होना चाहिए। –

+0

धन्यवाद @ दिलीपकृष्णन। मैं देखता हूं कि परिवर्तन को प्रतिबिंबित करने के लिए गिथब पर प्रलेखन को अद्यतन किया गया है। – nerdherd

संबंधित मुद्दे