2016-04-26 19 views
8

मैं स्वैगर 2.0 का उपयोग कर रहा हूं और मुझे एकाधिक पोस्ट पैरामीटर भेजने में समस्या है। मेरे पास एक swagger त्रुटि Operation cannot have a body parameter and a formData parameter है और मुझे नहीं पता कि इसे कैसे ठीक किया जाए। मेरी परिभाषा में मेरे पास बॉडी पैरामीटर है और इस पैरामीटर को JSON प्रारूप की आवश्यकता है, लेकिन एक तरफ मेरे पास अन्य पैरामीटर है जैसे फाइल अपलोड और फ़ाइल नाम।स्वैगर शरीर और फॉर्मडेटा पैरामीटर

मैं शरीर और फॉर्मडेटा पैरामीटर दोनों को भेजने के लिए कैसे कर सकता हूं? हल करने के लिए समस्या का प्रकार "फाइल" के साथ प्रपत्र पैरामीटर के रूप में "datas" स्थापित करने के लिए है

/updateDatas: 
    post: 
     summary: Upadate datas 
     description: | 
     Update datas 
     consumes: 
     - multipart/form-data 
     produces: 
      - application/json 
     parameters: 
     - name: firstFileName 
      in: formData 
      description: First file name. 
      required: true 
      type: string 
     - name: secondFileName 
      in: formData 
      description: Second file name. 
      required: true 
      type: string 
     - name: datas 
      in: body 
      description: Json object informations. 
      required: true 
      schema: 
      $ref: '#/definitions/Datas' 
     - name: firstFile 
      in: formData 
      description: First file .jpg 
      required: true 
      type: file 
     - name: clientFile 
      in: formData 
      description: Second file .jpg 
      required: true 
      type: file 
     tags: 
     - Application 
     responses: 
     '200': 
      description: Uploaded 
      schema: 
      $ref: '#/definitions/Upload' 
     '401': 
      description: Unauthorized Bad Token 
+0

[संभावित में डुप्लिकेट, स्वैगर में, एक एपीआई को परिभाषित करने के लिए जो एक स्कीमा पैरामीटर के साथ फ़ाइल का उपभोग करता है?] (Https://stackoverflow.com/questions/32725052/in-swagger-how-to-define-an -पीआई-वह-उपभोग-ए-फाइल-साथ-साथ-स्कीमा-पैराम) – Helen

+0

मेरा प्रश्न इस पोस्ट से पुराना है ... – John

+0

वह वास्तव में पुराना है (2015 से)। – Helen

उत्तर

5

एक ही रास्ता:

यहाँ वेब सेवा परिभाषा है। यहाँ एक उदाहरण है:

parameters: 
    - name: petId 
     in: path 
     description: ID of pet to update 
     required: true 
     type: integer 
     format: int64 
    - name: additionalMetadata 
     in: formData 
     description: Additional data to pass to server 
     required: false 
     type: string 
    - name: file 
     in: formData 
     description: file to upload 
     required: false 
     type: file 

रेफरी: https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/test/resources/2_0/petstore.yaml#L257

अद्यतन: शरीर मापदंडों और प्रपत्र मापदंडों सह-अस्तित्व नहीं कर सकते हैं: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject

शरीर - पेलोड कि HTTP अनुरोध के साथ जोड़ दिया गया है। चूंकि केवल एक पेलोड हो सकता है, केवल एक शरीर पैरामीटर हो सकता है। शरीर पैरामीटर का नाम पैरामीटर पर स्वयं का कोई प्रभाव नहीं पड़ता है और केवल दस्तावेज़ीकरण उद्देश्यों के लिए उपयोग किया जाता है। चूंकि फॉर्म पैरामीटर भी पेलोड में हैं, इसलिए शरीर और फॉर्म पैरामीटर एक ही ऑपरेशन के लिए एक साथ मौजूद नहीं हो सकते हैं।

+1

प्रकार 'फ़ाइल' के लिए कोई और तरीका नहीं है? क्योंकि मैं JSON डेटा – John

+0

से पहले फ़ाइल का उपयोग नहीं करना चाहता, धन्यवाद !, लेकिन क्या होगा यदि अतिरिक्त मेटाडेटा परिभाषा का संदर्भ है? – hmartos

+0

क्या आप एक उदाहरण दे सकते हैं कि HTTP अनुरोध का बॉडी/पेलोड कैसा दिखता है (उदा। Https://gist.github.com का उपयोग करके)? –

5

विनिर्देशों see, type:body और type:formDataअकड़ के अनुसार एक ही आपरेशन के लिए एक साथ नहीं हो सकता।

+1

ओपन एपीआई 3.0.0 के बारे में क्या? https://swagger.io/docs/specification/describing-request-body/ क्या फॉर्मडाटा के साथ JSON अब संभव है? – Gobliins

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