2015-10-26 11 views
15

मेरा परिदृश्य निम्न है।swagger के लिए जावा क्लाइंट कोड कैसे उत्पन्न करें REST API दस्तावेज़

मैं एक अकड़ है .json उदा .: http://petstore.swagger.io/v2/swagger.json मैं की तरह ऊपर REST API के लिए एक उत्पन्न जावा ग्राहक का उपयोग करना चाहते हैं:

PetApi petApi = new PetApi(); 
Pet pet = new Pet; 
pet.setName("cica"); 
pet.setId(1L); 
petApi.addPet(pet); 
System.out.println(petApi.getById(1L));` 

expexted उत्पादन: cica और नए पालतू जानवर के अनुसार संग्रहीत किया जाता है आरईएसटी एपीआई प्रत्यारोपण। कमांड के साथ petstore के लिए

मैं सफलतापूर्वक बनाई गई है सर्वर ठूंठ:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate 
    -i http://petstore.swagger.io/v2/swagger.json 
    -l spring-mvc 
    -o samples/server/petstore/spring-mvc 

लेकिन इस Maven परियोजना कोड एक सर्वर कोड है। इसमें @RequestMappingPetApi.java में एनोटेशन हैं और इसमें WebMvcConfiguration.class भी है।

मैं सर्वर-स्टब नहीं चाहता हूं। मैं पेटस्टोर रीस्ट एपीआई के लिए क्लाइंट-लाइब्रेरी रखना चाहता हूं।

क्या कोई ऐसा उपकरण है जो मेरे लिए उचित क्लाइंट लाइब्रेरी उत्पन्न कर सकता है? क्या मुझे सर्वर-स्टब को संशोधित करना चाहिए, इसलिए इसमें सभी मॉडल हैं या क्या मुझे एक साधारण springRestTemplate का उपयोग करना चाहिए?

उत्तर के लिए धन्यवाद!

उत्तर

9

मुझे लगता है कि आप स्वैगर कोडेजन के पैरामीटर -l के लिए सही मान का उपयोग नहीं करते हैं (आप spring-mvc का उपयोग करते हैं जो सर्वर-साइड तकनीक है)। आप मूल्य java का उपयोग करने का प्रयास कर सकते हैं।

आप यह भी देख सकते हैं कि एक उपकरण है, Restlet Studio, जो स्वैगर सामग्री से कोड उत्पन्न करने की अनुमति देता है। जावा के लिए, यह मुख्य रूप से रीसेट फ्रेमवर्क पर निर्भर करता है लेकिन मुझे लगता है कि यह आपकी आवश्यकताओं के अनुरूप हो सकता है।

आशा है कि यह आप में मदद करता है, थियरी

+1

जवाब के लिए धन्यवाद। मैं समझ नहीं सकता कि मैनुअल में मैं इस अनुभाग को कैसे याद कर सकता हूं लेकिन यह वास्तव में मुझे आवश्यक उत्तर था। –

8

JAR उपयोग करने के बजाय, आप भी https://generator.swagger.io का उपयोग कुछ भी स्थापित करने के बिना SDK (जावा, रूबी, पीएचपी, आदि) ऑनलाइन उत्पन्न करने के लिए कर सकते हैं। यहाँ एक उदाहरण है:

curl -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java 

और यहाँ एक नमूना प्रतिक्रिया है:

{"code":"1445940806041","link":"https://generator.swagger.io/api/gen/download/1445940806041"} 

फिर आप लिंक से ज़िपित एसडीके डाउनलोड कर सकते हैं।

https://generator.swagger.io के उत्पादन को अनुकूलित के बारे में अधिक विकल्पों के लिए, https://github.com/swagger-api/swagger-codegen#online-generators

(स्वैगर जेनरेटर स्वैगर Codegen परियोजना (मुक्त, खुला स्रोत) है कि आप अपने स्थानीय स्वैगर जनरेटर चला सकते हैं का हिस्सा है)

का संदर्भ लें

जुलाई 2017 तक, जावा एपीआई क्लाइंट जेनरेटर निम्नलिखित HTTP पुस्तकालयों का समर्थन करता है: जर्सी 1.x & 2.x, रेट्रोफिट 1.x & 2।एक्स, okhttp, बहाना करना, RESTEasy, RestTemplate

5

अपने परिदृश्य के लिए अपने आदेश की तरह इस

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate 
-i http://petstore.swagger.io/v2/swagger.json 
-l java 
-o samples/server/petstore/spring-mvc 

अन्य विकल्प देखना चाहिए Jave को अकड़ कन्वर्ट करने के लिए कर रहे हैं:

GitHub परियोजना यह जो पुस्तकालय (जर्सी, jersey2, okhttp-gson, आदि) जब जावा ग्राहक या सर्वर कोड को अकड़ परिवर्तित उपयोग करने का निर्णय करने के लिए आप पर निर्भर है साथ हालांकि। Generator.swagger.io के साथ आप decide which library to use भी कर सकते हैं। पुस्तकालय का चयन करने में सक्षम होने के लिए enhancement to editor.swagger.io भी हो सकता है। विचार करने के लिए यह है कि swagger.io विकल्प पूरी तरह से स्वतंत्र हैं, जबकि रेस्टलेट और एपीमैटिक फ्रीमियम हैं।

+1

editor.swagger.io generator.swagger का उपयोग करता है।आईओ, जो एपीआई क्लाइंट, सर्वर स्टब्स, और एपीआई दस्तावेज उत्पन्न करने के लिए, swagger codegen प्रोजेक्ट द्वारा भी पावर किया जाता है। –

+0

@ wing328 आप सही हैं और मुझे पता है कि अगर आप swagger-codegen प्रोजेक्ट या ऑनलाइन संस्करण (generator.swagger.io) का उपयोग करते हैं तो यह अभी भी एक फर्क पड़ता है। ऑनलाइन आप चयन नहीं कर सकते कि रूपांतरण के लिए किस लाइब्रेरी का उपयोग किया जाना चाहिए। – Huber

+0

आप कर सकते हैं। उत्पादन को कस्टमाइज़ करने के लिए विभिन्न विकल्पों को पारित करने के तरीके पर https://github.com/swagger-api/swagger-codegen#online- जनरेटर देखें। Editor.swagger.io के लिए, आउटपुट को कस्टमाइज़ करने के लिए मेनू जोड़ने के लिए एक चर्चा भी है: https://github.com/swagger-api/swagger-editor/issues/713 –

-4

हालांकि स्वैगर जनरेटर जावा एसडीके उत्पन्न करता है, एपीमैटिक एसडीके काफी परिपक्व, विस्तृत है, और अधिक लचीलापन देता है जो स्वैगर जनरल है। आपको एपीमैटिक एसडीके जनरेटर का प्रयास करना चाहिए, आप इसे प्यार करेंगे।

-1

शायद तेज और आसान तरीका यह करने के लिए:

  1. wget https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/2.2.1/swagger-codegen-cli-2.2.1.jar
  2. java -jar swagger-codegen-cli-2.2.1.jar generate -l <language> -i <pathOrUrlOfSwaggerSpec>

अधिक जानकारी here

0

@wing328's answer को बस एक मूर्खतापूर्ण विस्तार।

curl -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java 

यह इस त्रुटि (SSL प्रमाणपत्र समस्या) में जो परिणाम हैं

curl: (60) SSL certificate problem: unable to get local issuer certificate 
More details here: https://curl.haxx.se/docs/sslcerts.html 

एक -k स्विच कर्ल में जोड़े। उदाहरण:

curl -k -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java 

रिस्पांस

{"code":"7e542952-5385-4e34-8cf6-6196722fb18b","link":"https://generator.swagger.io/api/gen/download/7e542952-5385-4e34-8cf6-6196722fb18b"} 

पूरा अकड़ कल्पना JSON पेलोड बजाय URL के

इसके बजाय OpenAPI/स्वैगर कल्पना करने के लिए एक यूआरएल के साथ swaggerUrl का उपयोग करने का भेजा जा रहा है, आप कर सकते हैं spec के साथ JSON पेलोड में spec भी शामिल है, उदाहरण के लिए

{ 
    "options": {}, 
    "spec": { 
    "swagger": "2.0", 
    "info": { 
     "version": "1.0.0", 
     "title": "Test API" 
    }, 
    ... 
    } 
} 

अधिक जानकारी: Official Doc

+0

मुझे लगता है कि यह इस विषय से संबंधित है, तो कृपया वोट देने के लिए स्वतंत्र महसूस करें। मुझे लगता है कि यूनिक्स सिस्टम पर 'curl' कमांड का उपयोग या यहां तक ​​कि एक अलग सवाल है। –

+0

@ csikos.balint यह संबंधित है क्योंकि जब मैंने कोशिश की, तो इसके परिणामस्वरूप प्रमाणपत्र त्रुटि हुई ... मैं यहां कर्ल के यादृच्छिक विकल्प नहीं जोड़ रहा था। –

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