【发布时间】:2016-04-09 00:46:30
【问题描述】:
我正在使用 swagger-api 和 swagger-editor 为路由开发一个 RESTful API。 我无法弄清楚为什么我通过正文发送的 JSON 从未到达我的控制器。 这是我的 YAML
schemes:
- http
- https
produces: [application/json, multipart/form-data, application/x-www-form-urlencoded]
paths:
/projects:
x-swagger-router-controller: project
post:
description: create a new project
operationId: postProjects
consumes:
- application/json
parameters:
- name: param1
in: body
description: description
required: false
schema:
$ref: "#/definitions/Project"
responses:
"200":
description: Success
schema:
$ref: "#/definitions/Project"
default:
description: Error
schema:
$ref: "#/definitions/ErrorResponse"
definitions:
Project:
properties:
name:
type: string
required:
- name
我正在发送的发布请求的示例。
curl -v -X POST -H "Content-Type: application/json" -d '{"name":"test"}' http://127.0.0.1:10010/projects
和回应
{"message":"Request validation failed: Parameter (param1) failed schema validation","code":"SCHEMA_VALIDATION_FAILED","failedValidation":true,"results":{"errors":[{"code":"OBJECT_MISSING_REQUIRED_PROPERTY","message":"Missing required property: name","path":[]}],"warnings":[]},"path":["paths","/projects","post","parameters","0"],"paramName":"param1"}
如果我将参数“name”设置为不需要,我只会收到这样的空响应
{参数1:
{路径:['路径','/项目','发布','参数','0'],
架构:
{名称:'param1',
在:“身体”,
描述:'描述',
必需:假,
架构:[对象]},
原始值:{},
价值: {} } }
我不知道为什么其他格式(例如标题、路径或表单数据)可以正常工作。
我总是收到一个空对象。 req.swagger.params 没有价值。
我尝试了几种模式,但即使是最简单的也不起作用。
我可以从标题中看出“内容类型”:“应用程序/json”。
因此设置了内容类型,模式验证了一个名为“name”的简单字符串参数。一切都应该没问题。但仍然没有。
【问题讨论】:
-
这可能完全不相关,但对我来说,我不得不将
swagger-express-mw节点包降级回0.1.0以暂时解决此问题。 -
我确实降级了软件包,但由于其他原因,仍然一样。我在 github 上打开了一个问题。
-
你能把github问题的链接贴出来吗?
-
你可以找到打开的问题here 但恐怕答案不是很有帮助
标签: json post yaml swagger swagger-editor