我正在使用 Swagger-UI 来浏览我自己的 API,它是用葡萄构建的,并用葡萄 Swagger 自动记录。
我用谷歌搜索并尝试了我能找到的所有建议,但我无法让 POST 工作。这是我的标题:
header "Access-Control-Allow-Origin", "*"
header "Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, PATCH, DELETE"
header "Access-Control-Request-Method", "*"
header "Access-Control-Max-Age", "1728000"
header "Access-Control-Allow-Headers", "api_key, Content-Type"
我只是把所有建议的东西都扔了。我已经启用了 supportedSubmitMethods 中的所有 HTTP 方法,并且我已经使用 POSTMAN Chrome 扩展程序测试了 API,它运行良好。正确创建用户并返回正确的数据。
但是,我在 swagger 帖子中得到的只是服务器报告:
Started OPTIONS "/v1/users.json" for 127.0.0.1 at 2012-12-21 04:07:13 -0800
和 swagger 响应看起来像这样:
请求网址
http://api.lvh.me:3000/v1/users.json
响应体
响应代码
0
响应头
我还用 POSTMAN 测试了 OPTIONS 响应,如下所示:
Allow →OPTIONS, GET, POST
Cache-Control →no-cache
Date →Fri, 21 Dec 2012 12:14:27 GMT
Server →Apache-Coyote/1.1
X-Request-Id →9215cba8da86824b97c6900fb6d97aec
X-Runtime →0.170000
X-UA-Compatible →IE=Edge
最佳答案
我遇到了同样的问题并刚刚解决了它,希望这对某人有所帮助。
Swagger-UI 仅通过“form”paramType 而不是“body”paramType 通过 POST 接受多个参数,在本期中引用 https://github.com/wordnik/swagger-ui/issues/72 .
我使用了分支 :git => 'git://github.com/Digication/grape-swagger.git' 将 'post' 请求 paramType 更改为 'form'。为 swagger_doc 生成的 xml 输出(可能在 path/swagger_doc/api 或类似位置)应如下所示:
<api>
<path>/api/v2/...</path>
<operations type="array">
...
<httpMethod>POST</httpMethod>
<parameters type="array">
<parameter>
<paramType>form</paramType>
...More
不是
<paramType>body</paramType>
...More
我使用grape-swagger-rails gem在本地主机上自动安装swagger-ui(文件也可以从swagger-ui站点下载),一切正常!!
关于ruby-on-rails - 尽管 API 有效,但 Swagger-ui 只发送 OPTIONS 而不是 POST http 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13990021/