Swagger“ Try it out”的响应与生成的curl中的响应不同

时间:2018-07-26 10:01:38

标签: curl swagger-ui

在记录了我的API之后,我在UI中填写了请求的参数,然后单击“执行”。

然后给我相应的卷曲度和响应体。

由于我尚不了解的原因,我已经登录,但是响应正文是我注销后原本希望的那个

但是真正令我惊讶的是,在终端中运行curl时,我确实收到了正确的答案(登录时收到的答案)。

这是生成的Curl:

curl -X GET "http://server/path" -H "accept: */*" -H "Cookie: PHPSESSID=uk30v14m2l788eehtkb9q1j260"

和openapi规范

openapi: '3.0.0'
paths:
  /add.php:
    get:
      tags:
        - information
      parameters:
        - in: "header"
          name: "Cookie"
          type: string
      responses:
        '200':
          description: successful operation

对于上下文,我已经必须添加“ Access-Control-Allow-Origin:*”标头来授权来自Swagger的查询(在得到here描述的“无法提取错误”之前) / p>

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我找到了答案(感谢@Helen的提示!)

我在浏览器开发人员工具中检查了 swagger发送的卷曲,并且没有 cookie参数。我认为它会像其他方法一样处理,但是必须以不同的方式声明。

检查文档后,我发现必须将cookie参数声明为“ in:cookie”而不是“ in:header”(link)。 (该方法有效,但是招摇式编辑器发出警告,认为该选项无效)

此外,此cookie用于身份验证,我使用了专用的securityScheme(link

这是有效的openapi规范

openapi: '3.0.0'
components:
  securitySchemes:
    PHP_session:
      type: apiKey
      in: cookie
      name: PHPSESSID
paths:
  /add.php:
    get:
      tags:
        - information
      security:
        - PHP_session: []
      responses:
        '200':
          description: successful operation

edit:好吧,我学到了很多东西,该规范现在有效,但实际上仍然行不通(响应难以解释,我对此有一些错误的希望^^')。但是我猜它会做直到swagger-ui支持cookie

edit:如相关问题(link的答案中所指定),它在SwaggerHub中有效(本次是真的)