小编dB.*_*dB.的帖子

RESTful API是否应该为对象数组返回404?

让我们说有一个带订单的产品.如果您要求/ products/product_id,如果product_id不存在,它将返回404.但是,如果此产品没有订单或者它应该返回一个空数组,/ products/product_id/orders应返回404吗?

api rest

37
推荐指数
3
解决办法
9669
查看次数

RESTful API POST/DELETE应该在正文中返回什么?

要通过RESTful API关注和取消关注一个人,我有

  • POST/person/bob/follow
  • DELETE/person/bob/follow

它们应该在体内返回什么?

  1. 您关注的每个人的集合
  2. 你刚跟随/不跟进的人
  3. 状态如{status:"ok"}
  4. 没有.

api rest

16
推荐指数
2
解决办法
2万
查看次数

如果没有正文,4x错误的内容类型应该是什么?

考虑获取以下响应的HTTP请求:

405 Method Not Allowed
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

这样的内容类型应该是什么?

  • 什么都没有?
  • 没有设置?
  • 设为text/plaintext/html

http http-headers grape-api

15
推荐指数
1
解决办法
4818
查看次数

在Grape/Rack :: Mount :: Route中访问已编译的路由

我正在尝试生成由我的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的可读路径的方法?

rack ruby-on-rails ruby-1.9 grape-api

9
推荐指数
2
解决办法
6448
查看次数

尽管工作API,但Swagger-ui仅发送OPTIONS而不是POST http方法

我正在使用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)

api post ruby-on-rails swagger grape-api

7
推荐指数
1
解决办法
5738
查看次数

使用Grape构建XML API

我正在Grape gem的帮助下构建XML API.为API操作构建XML的最佳方法是什么?由于Grape没有使用标准轨道控制器,我无法使用views/../xml.builder.你有什么建议?也许有一些构建xml api的最佳实践?

xml api ruby-on-rails ruby-on-rails-3 grape-api

6
推荐指数
1
解决办法
1301
查看次数

如何将公共API添加到Rails应用程序?

我想打开我的Rails 2.3应用程序(在Heroku上托管)给开发人员.我想到了两种方法:

  1. 使用respond_to |格式| 应用程序,以及只允许授权开发人员API密钥的before_filter
  2. 使用专用于API的第二个Heroku帐户,共享原始应用程序的数据库.现在,更好的是:Rails,Sinatra还是Grape

我知道这是一个模糊的问题.你有什么好的文章或建筑模式可以帮助我吗?

谢谢,

凯文

ruby api ruby-on-rails sinatra grape-api

3
推荐指数
1
解决办法
1027
查看次数

我在哪里将Swagger-UI放入带有Grape的Rails应用程序中?

我正在重写(是的,我知道!)一个主要由API驱动的Rails应用程序,使用Grape by Intridea和葡萄招摇宝石来启用Swagger UI进行文档编制.

所以我有一个简单的hello world app运行.似乎可以从swagger测试中发现,虽然它现在正在给出JSON解析错误(我将在接下来看看).我想将swagger UI放入Rails应用程序,指向/swagger_doc.json,以便我构建时可以确保文档正确地构建在一起.

我在哪里将Swagger UI放在rails应用程序中?公共目录?

api json ruby-on-rails swagger grape-api

3
推荐指数
1
解决办法
3128
查看次数

Rails 3.2.11和Grape不能这样的文件:app/api/v1.rb

我试图在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)

ruby-on-rails ruby-on-rails-3 grape-api

2
推荐指数
1
解决办法
1659
查看次数

是什么导致<Error>:CGContextSetBaseCTM:实现loadView时无效的上下文0x0?

我有一个在loadView中执行此操作的ViewController:

self.view = [[UIView alloc] init];
Run Code Online (Sandbox Code Playgroud)

有时这会导致控制台出现以下错误:

:CGContextSetBaseCTM:无效的上下文0x0.这是一个严重的错误.该应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降低.此通知是礼貌的:请解决此问题.它将成为即将到来的更新中的致命错误.

如果你打电话[super loadView],这不会发生.

为什么?

objective-c uiviewcontroller uiview ios

2
推荐指数
1
解决办法
2014
查看次数

了解如何从Android到Rails应用程序验证用户身份

我有一个rails应用程序,我使用Devise对应用程序的用户进行身份验证.

问题是我正在构建一个Android应用程序,我想了解如何在Android上"轻松地"验证用户的流程.我读到了Basic和Digest Auth.

或api我使用Grape https://github.com/intridea/grape,其中包含用于身份验证的Basic和Digest中间件.

我只是想知道我应该在Android应用程序上存储用户的电子邮件/密码吗?

每个api请求都应该附上用户的电子邮件/密码?

另外,在经过身份验证的响应中,我的auth标头的好处是什么?

ruby authentication ruby-on-rails devise grape-api

1
推荐指数
1
解决办法
673
查看次数

有没有办法在葡萄上修改或发送自定义标题?

我正在使用歌利亚和葡萄.在我的巨人服务器上,它调用葡萄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返回结果之前专门创建回调/过滤器我想修改结果.

ruby goliath grape-api

1
推荐指数
1
解决办法
3329
查看次数

有人有包含 PNG 格式图像的 .ico 吗?

Windows 从 Vista 开始支持 PNG 格式的图标。据说您的格式与 .ico 文件相同,但图像本身是 PNG,没有 BITMAPINFOHEADER。

谁有这样的图标或者可以生成这样的软件吗?

png ico

0
推荐指数
1
解决办法
4667
查看次数