Ric*_*dan 7 api post ruby-on-rails swagger grape-api
我正在使用Swagger-UI浏览我自己的API,用葡萄构建并自动记录葡萄招摇.
我用Google搜索并尝试了我能找到的所有建议,但我无法让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"
Run Code Online (Sandbox Code Playgroud)
我只是扔了一切建议.我已经在supportedSubmitMethods中启用了所有HTTP方法,并且我使用POSTMAN Chrome扩展程序测试了API,它运行良好.正确创建用户并返回正确的数据.
然而,我得到的所有内容都是服务器报告:
Started OPTIONS "/v1/users.json" for 127.0.0.1 at 2012-12-21 04:07:13 -0800
Run Code Online (Sandbox Code Playgroud)
和swagger的反应看起来像这样:
请求网址
http://api.lvh.me:3000/v1/users.json
Run Code Online (Sandbox Code Playgroud)
响应机构
响应代码
0
Run Code Online (Sandbox Code Playgroud)
响应标题
我还用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
Run Code Online (Sandbox Code Playgroud)
很高兴听到你正在使用葡萄大摇大摆:我认为它很棒:)
我不完全确定您遇到同样的问题,但是当从浏览器进行本地测试时,它会尝试检查来源是否与请求的相同,因此为了确保我不会收到该错误,我创建了一个小型中间件将告诉浏览器我们允许所有来源。
我正在使用 Rails 进程(使用很棒的 Rails-api gem 创建),因此我创建了一个包含lib/middleware/access_control_allow_all_origin.rb以下内容的新文件:
module Middleware
class AccessControlAllowAllOrigin
def initialize(app)
@app = app
end
def call(env)
status, headers, body = @app.call(env)
allow_all_origin!(headers)
[status, headers, body]
end
private
def allow_all_origin!(headers)
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Request-Method'] = '*'
end
end
end
Run Code Online (Sandbox Code Playgroud)
在我的底部,application.rb我只需添加中间件,如下所示:
require 'middleware/access_control_allow_all_origin'
config.middleware.insert_after Rack::ETag, Middleware::AccessControlAllowAllOrigin
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
5738 次 |
| 最近记录: |