2014-11-20 10 views
7

Ho un'API RESTful che ho creato di recente e non ricorderò come utilizzarlo in pochi mesi. Ho deciso di documentare la mia API usando Swagger, tuttavia sto diventando pazzo.UI Swagger 2.1 "Elenco delle risorse di recupero" bloccato

Ho utilizzato http://editor.swagger.io/ per creare il file YAML che poi converto in un file JSON che può essere utilizzato da Swagger. Quando inserisco il file nell'interfaccia utente di Swagger, rimane bloccato a fetching resource list: localhost/swagger.json e la console dice Uncaught TypeError: Cannot read property '$ref' of undefined.

enter image description here enter image description here

sto usando la versione 2.1.0-alpha.5 di Swagger UI.

Ecco il mio file spec:

 
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

Come stai ospitando swagger.json Come si esegue spavalderia-ui – Ron

+0

@webron:? Il file "swagger.json" è alla radice della mia directory htdocs e la directory "dist" dal repository è anche nella radice ma è stata rinominata Sto usando xampp per ospitare tutto – kevc45

risposta

5

Ho provato vostra spec, e mentre io non sto ottenendo lo stesso errore che fai, la specifica è davvero valido.

Se si guarda #/definitions/MatchData/properties/stats, si vedrà che si definisce type: array ma non si fornisce una proprietà 'elementi' accanto ad essa per indicare quale matrice è (e ciò è obbligatorio). È possibile che si sia inteso utilizzare type: integer come le proprietà sopra di esso, che vanno insieme allo format: int64.

Dato che non so cosa intendessi fornire, è difficile fornire una soluzione accurata, ma se aggiungi un commento con quello che avevi intenzione di fare, potrei fornire una risposta più dettagliata.

Su alcuni test aggiuntivi, ho scoperto che c'è un bug nell'interfaccia utente. Dopo aver apportato tale modifica e caricato la specifica, l'operazione stessa non si espande se non si fa clic sul collegamento Expand Operations. Ho aperto un issue su di esso, sentitevi liberi di seguirlo lì.

+0

Ho finito per riscrivere l'intera specifica per zero. stesso bug che mi impedisce di aprire le sezioni. Grazie per il tuo aiuto. – kevc45

0

Questo problema può essere dovuto ad alcuni errori di indentazione nel file yaml che in realtà non sono stati visualizzati nell'editor di Swagger. Controlla tutte le tue definizioni e se vengono visualizzate come previsto nell'anteprima che puoi vedere nell'editor Swagger (in particolare controlla i MatchData).

Si può anche provare a dare:

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

Per il nostro caso, abbiamo utilizzato Swagger-php e noi abbiamo: * @SWG \ Response ( * di risposta = 200, * description = "risposta app " * @SWG \ Schema ( * type =" allineamento" *) *),

ma abbiamo perso "* @SWG \ Items (ref =" #/definizioni/pet ")". Dopo aver rimosso "@SWG \ Schema (", funziona ad esempio

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