2014-11-20 16 views
7

मेरे पास एक पुरानी एपीआई है जिसे मैंने हाल ही में बनाया है और मुझे याद नहीं होगा कि इसे कुछ महीनों में कैसे उपयोग किया जाए। मैंने स्वैगर का उपयोग करके अपने एपीआई को दस्तावेज करने का फैसला किया, हालांकि मैं पागल हो रहा हूं।स्वैगर यूआई 2.1 अटक "संसाधन सूची लाने"

मैंने वाईएएमएल फ़ाइल बनाने के लिए http://editor.swagger.io/ का उपयोग किया जो मैं फिर एक JSON फ़ाइल में परिवर्तित करता हूं Swagger का उपयोग कर सकते हैं। जब मैं स्वैगर यूआई में फाइल डालता हूं तो यह fetching resource list: localhost/swagger.json पर अटक जाता है और कंसोल Uncaught TypeError: Cannot read property '$ref' of undefined कहता है।

enter image description here enter image description here

मैं संस्करण स्वैगर यूआई के 2.1.0-alpha.5 उपयोग कर रहा हूँ।

यहाँ मेरी कल्पना फ़ाइल है:

 
swagger: '2.0' 
info: 
    title: TITLE 
    description: BLAH, BLAH, BLAH, ETC 
    version: "1.0b" 
host: api.example.com 
schemes: 
- http 
basePath: /v1 
produces: 
- application/json 
paths: 
    /match.json: 
    get: 
    #summary: Match Data 
     description: Used for getting data about a match 
     parameters: 
     - name: id 
      in: query 
      description: The match ID of from a game 
      required: true 
      type: integer 
      format: int32 
     - name: key 
      in: query 
      description: API key used for authentication. 
      required: true 
      type: string 
     responses: 
     200: 
      description: Returns match data 
      schema: 
      type: array 
      items: 
       $ref: '#/definitions/MatchData' 
     default: 
      description: Unexpected error 
      schema: 
      $ref: '#/definitions/Error' 

definitions: 
    MatchData: 
    properties: 
     info: 
     type: integer 
     format: int64 
     description: General information about the match 
     time: 
     type: integer 
     format: int64 
     description: Information about the start/end time 
     stats: 
     type: array 
     format: int64 
     description: Stats about the match 
    Error: 
    required: 
    - errorID 
     - message 
    properties: 
     errorID: 
     type: string 
     description: Error ID. 
     message: 
     type: string 
     description: Information about the error. 
+0

आप swagger.json कैसे होस्ट कर रहे हैं तुम कैसे अकड़-ui चला सकता हूँ – Ron

+0

@webron काम करता है: "swagger.json" फ़ाइल जड़ में है मेरे htdocs निर्देशिका का। और रेपो से "dist" निर्देशिका रूट पर भी है लेकिन इसका नाम बदला गया है। मैं इसे होस्ट करने के लिए xampp का उपयोग कर रहा हूं। – kevc45

उत्तर

5

मैं अपनी कल्पना परीक्षण किया है, और जब मैं एक ही त्रुटि तुम क्या नहीं मिल रहा है, कल्पना वास्तव में अवैध है।

यदि आप #/definitions/MatchData/properties/stats पर देखते हैं, तो आप देखेंगे कि आप type: array को परिभाषित करते हैं लेकिन आप इसके आगे एक 'आइटम' संपत्ति प्रदान नहीं करते हैं, यह कहने के लिए कि यह कौन सा सरणी है (और यह अनिवार्य है)। हो सकता है कि आप type: integer का उपयोग उपरोक्त गुणों की तरह करना चाहते हैं, जो format: int64 के साथ चलता है।

चूंकि मुझे नहीं पता कि आप क्या प्रदान करना चाहते हैं, इसलिए एक सटीक समाधान देना मुश्किल है, लेकिन यदि आप जो करना चाहते हैं उसके साथ कोई टिप्पणी जोड़ते हैं, तो मैं अधिक विस्तृत उत्तर प्रदान कर सकता हूं।

कुछ अतिरिक्त परीक्षणों पर, मैंने पाया कि यूआई में एक बग है। उस संशोधन और spec लोड करने के बाद, ऑपरेशन स्वयं तब तक विस्तारित नहीं होगा जब तक कि आप Expand Operations लिंक पर क्लिक न करें। मैंने इसके बारे में issue खोला है, इसे वहां पर फ़ॉलो करने के लिए स्वतंत्र महसूस करें।

+0

मैंने पूरी तरह से स्क्रैच के लिए पूरे spec को फिर से लिखना समाप्त कर दिया। इसके अलावा मुझे एक ही बग जो मुझे अनुभाग खोलने से रोकती है। आपकी मदद के लिए धन्यवाद। – kevc45

0

यह समस्या yaml फ़ाइल में कुछ इंडेंटेशन त्रुटियों के कारण हो सकती है जो वास्तव में स्वैगर संपादक में दिखाई नहीं दे रही थी। अपनी सभी परिभाषाओं की जांच करें और क्या वे पूर्वावलोकन में अपेक्षित रूप से प्रदर्शित हो रहे हैं जिन्हें आप स्वैगर संपादक (विशेष रूप से मैचडेटा चेक) में देख सकते हैं।

तुम भी दे रही है कोशिश कर सकते हैं: हमारे मामले के लिए

responses: 
200: 
    description: Returns match data 
    schema: 
    type: array 
    items: 
     schema: 
     $ref: '#/definitions/MatchData' 
0

, हम स्वैगर-php का इस्तेमाल किया और हमने: * @SWG \ रिस्पांस ( * प्रतिक्रिया = 200, * वर्णन = "अनुप्रयोग प्रतिक्रिया " * @SWG \ स्कीमा ( * type =" सरणी * @SWG \ आइटम (रेफरी = "#/परिभाषाएँ/पालतू") "" *) *),

लेकिन हम याद किया "। ? निकालना "@SWG \ स्कीमा (" के बाद, यह जैसे

*  @SWG\Response(
*   response=200, 
*   description="app response" 
* ), 
संबंधित मुद्दे