2015-06-24 9 views
24

Quindi ho capito che se vogliamo i parametri del corpo dobbiamo avere uno schema, cosa che faccio. Il problema è non importa quanto provo a definire il mio schema, non mi permette di avere più parametri del corpo. Ecco un esempio di uno dei metodi che ho provato. Qualsiasi aiuto sarebbe grande!Swagger Editor più parametri nel corpo

swagger: '2.0' 

# This is your document metadata 
info: 
    version: "0.0.1" 
    title: Todo App 
schema: { 
     } 
host: localhost:3000 
schemes: 
    - http 
    - https 
consumes: 
    - application/json 
produces: 
    - application/x-www-form-urlencoded 
basePath:/

paths: 
    # This is a path endpoint. Change it. 
    /tasks: 
    post: 
     description: | 
     Add 'Task' object. 

     parameters: 
     # An example parameter that is in query and is required 
     - 
      name: name 
      in: query 
      description: unique object task name 
      required: true 
      schema: 
      type: string 
     - name: description 
      in: query 
      description: task description 
      required: true 
      schema: 
      type: string 

     responses: 
     # Response code 
     200: 
      description: Successful response 
      # A schema describing your response object. 
      # Use JSON Schema format 
      schema: 
       title: Return String 
       type: string 
       example: "Task added succesfully" 
     500: 
      description: Error 
      schema: 
      type: string 
      example: "Could not add Task" 

risposta

31

non sono sicuro di capire la tua domanda ...

  • Se si cerca di definire il parametro più di un organismo per una sola operazione, non è possibile. Come spiegato in swagger specification:

Body [...] there can only be one body parameter

  • Se si tenta di inviare un corpo con più parametri, si aggiunge lo Object Model nella sezione definizioni e fa riferimento in voi parametro corpo, vedi sotto (funziona con editor.swagger.io:

Voi nodi esempi sono anche sbagliato, vedi here per maggiori dettagli.

swagger: '2.0' 
info: 
    version: "0.0.1" 
    title: Todo App 
host: localhost:3000 
schemes: 
    - http 
    - https 
consumes: 
    - application/json 
produces: 
    - application/x-www-form-urlencoded 
basePath:/
paths: 
    # This is a path endpoint. Change it. 
    /tasks: 
    post: 
     description: | 
     Add 'Task' object. 
     parameters: 
     - name: task 
      in: body 
      description: task object 
      required: true 
      schema: 
      $ref: '#/definitions/Task' 
     responses: 
     200: 
      description: Successful response 
      schema: 
       title: Return String 
       type: string 
       example: "Task added succesfully" 
     500: 
      description: Error 
      schema: 
      type: string 
      example: "Could not add Task" 
definitions: 
    Task: 
    description: Task object 
    properties: 
     name: 
     type: string 
     description: task object name 
     description: 
     type: string 
     description: task description 
    required: 
     - name 
     - description 
+0

Grazie per la risposta. Ma sai cosa significa questo errore? {"message": "Impossibile aggiornare l'attività ValidationError: Validator \" required \ "non riuscito per il nome del percorso, Validator \" required \ "non riuscito per la descrizione del percorso"} –

+0

Come viene visualizzato questo errore? Potresti descrivere il tuo contesto? –

+0

Succede quando provo a fare un test della mia funzione, con l'esempio che hai usato, ma per una funzione put, tutto sembrava funzionare correttamente e poi quando ho provato a provare ho ricevuto quell'errore. –

1

È anche possibile definire le proprietà del parametro del corpo della richiesta utilizzando properties come parte del suo schema. Questo ha un buon esempio in Object Payload: https://swagger.io/docs/specification/2-0/describing-request-body/.

paths: 
    /users: 
    post: 
     summary: Creates a new user. 
     consumes: 
     - application/json 
     parameters: 
     - in: body 
      name: user 
      description: The user to create. 
      schema: 
      type: object 
      required: 
       - userName 
      properties: 
       userName: 
       type: string 
       firstName: 
       type: string 
       lastName: 
       type: string 
     responses: 
     201: 
      description: Created 

Lo svantaggio, naturalmente, è che non si ottiene il riutilizzo di una definizione di oggetto, ma a volte una definizione di oggetto non è appropriato.

Problemi correlati