gpt4 book ai didi

ruby-on-rails - 在 Rack 应用程序上使用 Grape-Api gem 获取绝对 URL

转载 作者:数据小太阳 更新时间:2023-10-29 08:22:45 24 4
gpt4 key购买 nike

我正在用 grape gem 做一个 API ,在我的一项服务中,我想检索完整的 URL。例如,如果用户请求:

api.myapp.com/android/users.json

我希望能够检索 api.myapp.com/android/users.json 或至少 /android/users.json

class MyApp::API::Users < Grape::API

resource :users do

get do
request.original_url
# stuff ...
end
end
end

我尝试了我从 Rails 知道的东西,但现在它是 Grape,它不起作用:

  "error": "undefined method `original_url' for #<Grape::Request:0x00000005a78c08>"

最佳答案

我想在我自己的 API 中做同样的事情(生成绝对 URI),经过大量研究,我最终放弃了。令人惊讶的是,我找不到从 Grape 中获取您正在寻找的信息的好方法——例如,您不能指定资源“挂载”在特定路径,然后稍后检索该信息。

在此期间,我最后做的是在每个请求开始时将基本 URL(方案、主机名和端口)保存在一个全局变量中:

before do
# Save the base URL of the request, used by resources to build
# their canonical URI
Resources::base_url = request.base_url
end

然后,在每个资源表示器中,使用硬编码路径信息“手动”组装 URI:

link :self do
RideYork::API::Resources::base_url +
"/resources/agencies/#{represented.id}" if represented.id
end

这是一个糟糕的 hack,但我不知道有更好的解决方案。

关于ruby-on-rails - 在 Rack 应用程序上使用 Grape-Api gem 获取绝对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25531545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com