Swagger API "required" - 这需要多少?
Swagger API "required" - how much is this required?
我创建了一个 Swagger(在 nodejs/express 上)测试 API 使用此规范(仅相关部分):
...
parameters:
- name: name
in: query
required: true
type: string
...
但是我可以用空参数调用url,例如
http:///localhost/test?name=
而且它工作没有任何问题,没有抛出异常或任何其他迹象。为什么?
如果我通过 curl 或邮递员从终端发出类似的呼叫,它也能正常工作。我从请求对象中解析查询,发现在这种情况下,查询参数被解释为空字符串。
通过 SwaggerUI 进行调用是不同的,因为 UI 实际上不会进行调用,除非查询字段有值。
尝试在您的处理程序中执行 console.log(req.query);
。您可能会看到 {name: ''}
。这是合法的,只是name的值是一个空字符串。
在此处查看 JSON4:Representing null in JSON。所以名称已定义,但它是空的。
您可能需要检查空字符串值。
希望对您有所帮助!
我创建了一个 Swagger(在 nodejs/express 上)测试 API 使用此规范(仅相关部分):
...
parameters:
- name: name
in: query
required: true
type: string
...
但是我可以用空参数调用url,例如
http:///localhost/test?name=
而且它工作没有任何问题,没有抛出异常或任何其他迹象。为什么?
如果我通过 curl 或邮递员从终端发出类似的呼叫,它也能正常工作。我从请求对象中解析查询,发现在这种情况下,查询参数被解释为空字符串。
通过 SwaggerUI 进行调用是不同的,因为 UI 实际上不会进行调用,除非查询字段有值。
尝试在您的处理程序中执行 console.log(req.query);
。您可能会看到 {name: ''}
。这是合法的,只是name的值是一个空字符串。
在此处查看 JSON4:Representing null in JSON。所以名称已定义,但它是空的。
您可能需要检查空字符串值。
希望对您有所帮助!