Curl “招摇过市”的回应;“试试看”;与生成的旋度中的旋度不同
记录了我的API之后,我在UI中填写了请求的参数并单击“执行” 然后我得到了相应的旋度和响应体 出于我还不明白的原因,我已登录,但如果我注销,响应主体就是我所期望的 但我真正感到惊讶的是,在终端中运行curl时,我确实收到了正确的答案(登录时收到的答案) 以下是生成的旋度:Curl “招摇过市”的回应;“试试看”;与生成的旋度中的旋度不同,curl,swagger-ui,Curl,Swagger Ui,记录了我的API之后,我在UI中填写了请求的参数并单击“执行” 然后我得到了相应的旋度和响应体 出于我还不明白的原因,我已登录,但如果我注销,响应主体就是我所期望的 但我真正感到惊讶的是,在终端中运行curl时,我确实收到了正确的答案(登录时收到的答案) 以下是生成的旋度: curl -X GET "http://server/path" -H "accept: */*" -H "Cookie: PHPSESSID=uk30v14m2l788eehtkb9q1j260" 以及openapi规范
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的查询(在此之前,我得到了描述的“Failed to fetch error”)
谢谢你的帮助 我找到了答案(谢谢@Helen的提示!)
我在浏览器开发工具中检查了swagger发送的curl,但cookie参数不在那里。我原以为它会像其他人一样处理,但它必须以不同的方式声明
检查文档后,我发现cookies参数必须声明为“in:cookie”,而不是“in:header”()。(这是可行的,但招摇过市的编辑器会发出警告,不认为这是一个有效的选项)
此外,此cookie用于身份验证目的,我使用了专用的securityScheme()
以下是有效的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
编辑:嗯,我学到了很多,规范现在是有效的,但实际上它仍然不起作用(答案很难解释,我有一些错误的希望)。但我想它会一直保持下去,直到大摇大摆的用户界面支持cookies为止
编辑:如相关问题()的答案所述,它在SwiggerHub中工作(这次是实时的)请发布curl命令和Swigger UI发送的实际请求。要捕获Swagger UI请求,请打开开发工具(F12),打开网络选项卡,然后执行该请求。然后,如果使用Chrome,右键单击请求(实际请求,而不是选项请求)并选择“复制为cURL(bash)”。如果您使用Firefox,右键单击请求,选择“编辑并重新发送”,然后在此处发布屏幕截图。(或者,您可以使用Fiddler或Charles Proxy或类似工具记录原始HTTP请求。)“但我真正惊讶的是,当在终端中运行curl时,我确实收到了正确的答案。”-正确的是“注销”,或者像您登录一样的响应?您的API使用哪种身份验证?Swagger Editor和Swagger UI当前不支持在“试用”请求中发送cookie-有关详细信息,请参阅。这就是为什么它在Swagger UI中不起作用,但在命令行中与curl一起起作用的原因。我不确定你所说的“像个魔咒”是什么意思,因为Swagger UI目前正在发送“试用”请求中的Cookie。@Helen Well yes^^当我看到我错误地认为它起作用时,我想编辑它(响应非常大,我错过了相关信息)但你比我快。