web-dev-qa-db-fra.com

Swagger Editor plusieurs paramètres dans le corps

Je comprends donc que si nous voulons des paramètres de corps, nous devons avoir un schéma, ce que je fais. Le problème est que peu importe comment j'essaie de définir mon schéma, cela ne me permet pas d'avoir plusieurs paramètres de corps. Voici un exemple d'une des méthodes que j'ai essayées. Toute aide est la bienvenue!

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"
30
Jacob Brauchler

Je ne suis pas sûr de comprendre votre question ...

  • Si vous essayez de définir plusieurs paramètres de corps pour une opération, vous ne pouvez pas. Comme expliqué dans spécification swagger :

Corps [...] il ne peut y avoir qu'un seul paramètre de corps

  • Si vous essayez d'envoyer un corps avec plusieurs paramètres, ajoutez un modèle d'objet dans la section des définitions et faites-le référence dans vos paramètres de corps, voir ci-dessous (fonctionne avec editor.swagger.io ):

Vos exemples de nœuds sont également incorrects, voir ici pour plus de détails.

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
38
Nelson G.

Vous pouvez également définir les propriétés du paramètre de corps de requête à l'aide de properties dans le cadre de son script schema. Ceci a un bon exemple sous 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

Bien entendu, l’inconvénient est que la définition d’objet n’est pas réutilisée, mais parfois, une définition d’objet n’est pas appropriée.

5
GabeV