2015-06-24 18 views
24

Vì vậy, tôi hiểu rằng nếu chúng ta muốn các thông số cơ thể chúng ta phải có một lược đồ, mà tôi làm. Vấn đề là không có vấn đề làm thế nào tôi cố gắng để xác định lược đồ của tôi nó không cho phép tôi có nhiều thông số cơ thể. Đây là một ví dụ về một trong những phương pháp tôi đã thử. Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời!Swagger Soạn thảo nhiều thông số trong cơ thể

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" 

Trả lời

31

Tôi không chắc chắn để hiểu câu hỏi của bạn ...

  • Nếu bạn cố gắng để xác định tham số nhiều hơn một cơ thể cho một hoạt động, bạn có thể không. Như đã giải thích trong swagger specification:

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

  • Nếu bạn cố gắng gửi một cơ thể với nhiều thông số, thêm bạn phản đối mô hình trong phần định nghĩa và tham khảo nó trong tham số cơ thể bạn, xem dưới đây (chỉ hoạt động với editor.swagger.io:

Bạn ví dụ nút cũng là sai, xem here để biết thêm chi tiết.

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

Cảm ơn câu trả lời của bạn. Nhưng bạn có biết lỗi này có nghĩa là gì không? {"message": "Không thể cập nhật tác vụ. ValidationError: Validator \" required \ "không thành công cho tên đường dẫn, Validator \" required \ "không thành công cho mô tả đường dẫn"} –

+0

Làm thế nào để bạn nhận được lỗi này? Bạn có thể mô tả bối cảnh của bạn? –

+0

Điều đó xảy ra khi tôi thử kiểm tra chức năng của mình, với ví dụ bạn đã sử dụng nhưng đối với hàm put, mọi thứ dường như hoạt động đúng và sau đó khi tôi thử kiểm tra, tôi đã nhận được lỗi đó. –

1

Bạn cũng có thể xác định các thuộc tính của tham số nội dung yêu cầu bằng cách sử dụng properties như một phần của schema. Điều này có một ví dụ tốt trong 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 

Điều bất lợi là bạn không sử dụng lại định nghĩa đối tượng, nhưng đôi khi định nghĩa đối tượng không phù hợp.

Các vấn đề liên quan