让我们说有一个带订单的产品.如果您要求/ products/product_id,如果product_id不存在,它将返回404.但是,如果此产品没有订单或者它应该返回一个空数组,/ products/product_id/orders应返回404吗?
要通过RESTful API关注和取消关注一个人,我有
它们应该在体内返回什么?
考虑获取以下响应的HTTP请求:
405 Method Not Allowed
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)
这样的内容类型应该是什么?
text/plain
或text/html
我正在尝试生成由我的Grape :: API(MyApi)子类生成的所有路由的列表.
我可以致电:
MyApi.send(:route_set).instance_variable_get(:@routes)
Run Code Online (Sandbox Code Playgroud)
这给了我一个Rack :: Mount :: Route对象的数组.
Route对象唯一有用的属性是:返回Hash的条件,如下所示:
:path_info => (?-mix:\\A\\/api\\/(?<version>v1)\\/token(?:\\.(?<format>[^\\/]+))?\\Z)", "k: request_method, v: (?-mix:\\AGET\\Z)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,哈希值是用于匹配路径路径的正则表达式.我也可以使用:named_captures从regexp获取所有命名的捕获:
{:path_info=>{:version=>0, :format=>1}, :request_method=>{}}
Run Code Online (Sandbox Code Playgroud)
最终我要做的是生成通过Grape :: API创建的所有路由的列表,它们的完整路径等.在条件下尝试解构正则表达式对我没有意义.是否存在另一种访问/生成Rack :: Mount :: Route的可读路径的方法?
我正在使用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) 我正在Grape gem的帮助下构建XML API.为API操作构建XML的最佳方法是什么?由于Grape没有使用标准轨道控制器,我无法使用views/../xml.builder
.你有什么建议?也许有一些构建xml api的最佳实践?
我想打开我的Rails 2.3应用程序(在Heroku上托管)给开发人员.我想到了两种方法:
我知道这是一个模糊的问题.你有什么好的文章或建筑模式可以帮助我吗?
谢谢,
凯文
我正在重写(是的,我知道!)一个主要由API驱动的Rails应用程序,使用Grape by Intridea和葡萄招摇宝石来启用Swagger UI进行文档编制.
所以我有一个简单的hello world app运行.似乎可以从swagger测试中发现,虽然它现在正在给出JSON解析错误(我将在接下来看看).我想将swagger UI放入Rails应用程序,指向/swagger_doc.json,以便我构建时可以确保文档正确地构建在一起.
我在哪里将Swagger UI放在rails应用程序中?公共目录?
我试图在Rails 3.2.11应用程序中运行Grape API.根据葡萄文档,我应该在我的config/application.rb中添加以下行.
# Auto-load API and its subdirectories
config.paths.add "app/api", :glob => "**/*.rb"
config.autoload_paths += Dir["#{Rails.root}/app/api/*"]
Run Code Online (Sandbox Code Playgroud)
并使用以下代码创建config/initializers/reload_api.rb:
if Rails.env.development?
api_files = Dir["#{Rails.root}/app/api/**/*.rb"]
api_reloader = ActiveSupport::FileUpdateChecker.new(api_files) do
Rails.application.reload_routes!
end
ActionDispatch::Callbacks.to_prepare do
api_reloader.execute_if_updated
end
end
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用.这是我的代码.在我的app/api/v1.rb中:
module Api
class V1 < Grape::API
get '/hello' do
[]
end
end
end
Run Code Online (Sandbox Code Playgroud)
和我的config/routes.rb:
Blog::Application.routes.draw do
mount Api::V1 => "/"
end
Run Code Online (Sandbox Code Playgroud)
当我跑步时,rake routes
我得到以下错误:
uninitialized constant Api
/home/zoloo/code/nomin/config/routes.rb:7:in `block in <top (required)>'
/home/zoloo/.rvm/gems/ruby-1.9.3-p194@rails-3.2.11/gems/actionpack-3.2.11/lib/action_dispatch/routing/route_set.rb:282:in `instance_exec'
/home/zoloo/.rvm/gems/ruby-1.9.3-p194@rails-3.2.11/gems/actionpack-3.2.11/lib/action_dispatch/routing/route_set.rb:282:in `eval_block'
/home/zoloo/.rvm/gems/ruby-1.9.3-p194@rails-3.2.11/gems/actionpack-3.2.11/lib/action_dispatch/routing/route_set.rb:260:in `draw'
/home/zoloo/code/nomin/config/routes.rb:5:in `<top (required)>'
/home/zoloo/.rvm/gems/ruby-1.9.3-p194@rails-3.2.11/gems/railties-3.2.11/lib/rails/application/routes_reloader.rb:40:in `block in …
Run Code Online (Sandbox Code Playgroud) 我有一个在loadView中执行此操作的ViewController:
self.view = [[UIView alloc] init];
Run Code Online (Sandbox Code Playgroud)
有时这会导致控制台出现以下错误:
:CGContextSetBaseCTM:无效的上下文0x0.这是一个严重的错误.该应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降低.此通知是礼貌的:请解决此问题.它将成为即将到来的更新中的致命错误.
如果你打电话[super loadView]
,这不会发生.
为什么?
我有一个rails应用程序,我使用Devise对应用程序的用户进行身份验证.
问题是我正在构建一个Android应用程序,我想了解如何在Android上"轻松地"验证用户的流程.我读到了Basic和Digest Auth.
或api我使用Grape https://github.com/intridea/grape,其中包含用于身份验证的Basic和Digest中间件.
我只是想知道我应该在Android应用程序上存储用户的电子邮件/密码吗?
每个api请求都应该附上用户的电子邮件/密码?
另外,在经过身份验证的响应中,我的auth标头的好处是什么?
我正在使用歌利亚和葡萄.在我的巨人服务器上,它调用葡萄api,如下所示:
when '/posts' then FrameworksAPI::API.call(env)
Run Code Online (Sandbox Code Playgroud)
在我的葡萄api课上,我的方法就像这样简单:
get '/:id' do
Post.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
我想修改标题 - 特别是'Content-Length'但不确定如何.
我还想问一个额外的问题.如何在方法GET返回结果之前专门创建回调/过滤器我想修改结果.
Windows 从 Vista 开始支持 PNG 格式的图标。据说您的格式与 .ico 文件相同,但图像本身是 PNG,没有 BITMAPINFOHEADER。
谁有这样的图标或者可以生成这样的软件吗?