在记录了我的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>
感谢您的帮助!
答案 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中有效(本次是真的)