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"
我只是扔了一切建议.我已经在supportedSubmitMethods中启用了所有HTTP方法,并且我使用POSTMAN Chrome扩展程序测试了API,它运行良好.正确创建用户并返回正确的数据.
然而,我得到的所有内容都是服务器报告:
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
很高兴听到你正在使用葡萄大摇大摆:我认为它很棒:)
我不完全确定您遇到同样的问题,但是当从浏览器进行本地测试时,它会尝试检查来源是否与请求的相同,因此为了确保我不会收到该错误,我创建了一个小型中间件将告诉浏览器我们允许所有来源。
我正在使用 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
在我的底部,application.rb我只需添加中间件,如下所示:
require 'middleware/access_control_allow_all_origin'
config.middleware.insert_after Rack::ETag, Middleware::AccessControlAllowAllOrigin
希望这可以帮助。
| 归档时间: | 
 | 
| 查看次数: | 5738 次 | 
| 最近记录: |