2014-11-20 9 views
7

Ich habe eine RESTful API, die ich vor kurzem erstellt habe und ich werde mich nicht daran erinnern, wie Sie es in ein paar Monaten verwenden. Ich beschloss, meine API mit Swagger zu dokumentieren, aber ich werde verrückt.Swagger UI 2.1 Stuck "fetching Ressourcenliste"

Ich habe http://editor.swagger.io/ verwendet, um die YAML-Datei zu erstellen, die ich dann in eine JSON-Datei umwandeln kann, die Swagger verwenden kann. Wenn ich die Datei in Swagger UI stecke, bleibt sie bei fetching resource list: localhost/swagger.json hängen und die Konsole sagt Uncaught TypeError: Cannot read property '$ref' of undefined.

enter image description here enter image description here

Ich bin mit Version 2.1.0-alpha.5 von Swagger UI.

Hier ist meine Spec-Datei:

 
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

Wie werden Sie Hosting swagger.json Wie führen Sie Prahlerei-ui – Ron

+0

@webron:? Die „swagger.json“ Datei an der Wurzel von meinem htdocs Verzeichnis. Und das "dist" Verzeichnis vom Repo ist auch am Stamm, aber umbenannt. Ich benutze xampp, um alles zu hosten. – kevc45

Antwort

5

ich Ihre spec getestet haben, und während ich nicht die gleichen Fehler Sie tun, ist die Spezifikation in der Tat ungültig.

Wenn Sie #/definitions/MatchData/properties/stats betrachten, werden Sie sehen, dass Sie die type: array definieren, aber Sie bieten keine 'items'-Eigenschaft daneben, um zu sagen, welches Array es ist (und das ist obligatorisch). Sie haben möglicherweise beabsichtigt, type: integer wie die Eigenschaften darüber zu verwenden, die mit der format: int64 einhergeht.

Da ich nicht weiß, was Sie beabsichtigen zu liefern, ist es schwierig, eine genaue Lösung zu geben, aber wenn Sie einen Kommentar hinzufügen, was Sie vorhatten, könnte ich eine detailliertere Antwort geben.

Nach einigen zusätzlichen Tests, entdeckte ich, dass es einen Fehler in der Benutzeroberfläche gibt. Nachdem Sie diese Änderung vorgenommen haben und die Spezifikation geladen ist, wird die Operation nicht erweitert, wenn Sie nicht auf die Verknüpfung Expand Operations klicken. Ich habe eine issue darüber geöffnet, fühlen Sie sich frei, es dort zu folgen.

+0

Ich beendete, gerade, die ganze Spezifikation für Kratzer neu zu schreiben. Auch habe ich das Derselbe Fehler, der mich daran hindert, die Abschnitte zu öffnen. Danke für Ihre Hilfe. – kevc45

0

Dieses Problem kann durch einige Einrückungsfehler in der YAML-Datei verursacht werden, die im Swagger-Editor nicht angezeigt wurden. Überprüfen Sie alle Ihre Definitionen und ob sie in der Vorschau, die Sie im Swagger-Editor sehen können, wie erwartet angezeigt werden (insbesondere MatchData überprüfen).

Sie auch zu geben versuchen:

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

Für unseren Fall haben wir Swagger-php und wir haben: * @SWG \ Response ( * response = 200, * description = "app Antwort " * @SWG \ Schema ( * type =" Array“ *) *),

aber wir verpassten "* @SWG \ Artikel (ref =" #/Definitionen/pet ")". „@SWG \ Schema (“ Nach dem Entfernen funktioniert es zB

*  @SWG\Response(
*   response=200, 
*   description="app response" 
* ), 
Verwandte Themen