如何使用 swagger 使用 json 作为有效负载的 post 请求创建 api
Posted
技术标签:
【中文标题】如何使用 swagger 使用 json 作为有效负载的 post 请求创建 api【英文标题】:How to create api using post request with json as payload using swagger 【发布时间】:2019-11-01 23:48:44 【问题描述】:我尝试使用 swagger 为发布请求创建 api,但无法确定我应该在 swagger 中配置哪些参数才能创建此 API。
我使用邮递员来获取有关响应的所有信息并大张旗鼓地实施。
'/api/v1/labels':
post:
tags:
- devices
summary: 'create new label'
description: 'create new label to a given device'
operationId: createNewLabel
produces:
- application/json
parameters:
- name: x-access-token
description: 'cognito token'
in: header
type: string
required: true
- in: body
name: body
description: add label details
required: true
schema:
$ref: '#/definitions/labelRequest'
responses:
'201':
schema:
$ref: '#/definitions/labelRequest'
description: Created
这是我写的定义:
labelRequest:
type: object
items:
$ref: '#/definitions/labelRequestBody'
labelRequestBody:
type: object
properties:
device_ids:
type: array
items:
type: string
example: ["9bc11e25-4db2-4780-b761-390e3806082a"]
format: uuid
name:
type: string
example: new_label
这是 API 调用:
https:///api/v1/labels
带有这些标题:
x-access-token
并以这个主体作为有效负载:
"device_ids":["ea4b9daa-07cd-4cd6-981f-c86e1e81f04c"],
"name":"labelName"
预期结果是:201(已创建)
【问题讨论】:
【参考方案1】:你快到了,只需将 labelRequest
架构更改为:
definitions:
labelRequest:
type: object
properties:
device_ids:
type: array
items:
type: string
# Array item example should NOT be enclosed in []
example: "9bc11e25-4db2-4780-b761-390e3806082a"
format: uuid
name:
type: string
example: new_label
【讨论】:
以上是关于如何使用 swagger 使用 json 作为有效负载的 post 请求创建 api的主要内容,如果未能解决你的问题,请参考以下文章
如何将 swagger 2.0 JSON 文件分解为多个模块
如何使用 Swashbuckle 的 SwaggerUI 显示静态 swagger.json 文件而不是 SwaggerGen 的动态创建的定义?
如何从 Swagger API 声明生成 JSON-Schema
如何使用 UrlFetchApp 服务发送 JSON 有效负载?
如何从 protobuf (.proto) 文件中生成 (.json/.yaml) 中的 swagger3 (OpenAPI3) 规范?