2015-06-24 14 views
24

Rozumiem, że jeśli chcemy parametrów ciała, musimy mieć schemat, który robię. Problemem jest to, niezależnie od tego, jak próbuję zdefiniować mój schemat, to nie pozwala mi mieć wielu parametrów ciała. Oto przykład jednej z metod, które wypróbowałem. Każda pomoc będzie świetna!Redaktor Swagger wiele parametrów w ciele

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" 

Odpowiedz

31

nie jestem pewien zrozumieć swoje pytanie ...

  • Jeśli próbuje określić więcej niż jeden parametr ciała dla jednej operacji, nie można. Jak wyjaśniono w swagger specification:

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

  • Jeśli próbujesz wysłać korpus z wieloma parametrami, dodać Ci object model, w sekcji definicji i skierować ją w was parametru ciała, patrz poniżej (działa z editor.swagger.io:

Wy przykłady węzły również są złe, patrz here więcej szczegółów.

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

Dziękuję za odpowiedź. Ale czy wiesz, co oznacza ten błąd? {"message": "Nie można zaktualizować zadania. ValidationError: Validator \" required \ "nie powiodło się dla nazwy ścieżki, Validator \" wymagane \ "nie powiodło się dla opisu ścieżki"} –

+0

Jak uzyskać ten błąd? Czy mógłbyś opisać swój kontekst? –

+0

Zdarza się, gdy próbuję wykonać test mojej funkcji, z podanym przykładem, ale dla funkcji put, wszystko wydawało się działać poprawnie, a kiedy próbowałem przetestować, otrzymałem ten błąd. –

1

Można także zdefiniować właściwości parametru obiektu żądania za pomocą properties jako części jego schema. Jest to dobry przykład w 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 

Wadą jest oczywiście to, że nie dostać ponowne wykorzystanie definicji obiektu, ale czasami definicja obiektu nie jest właściwe.