Tag: rest

如果用户未经授权,如何使用Devise发送CORS头(401响应)

我正在开发一个应用程序,其中服务器和api消费客户端位于不同的域下,所以我想使用CORS 。 为此,我必须在服务器响应中设置相应的http标头: def cors_set_access_control_headers headers[‘Access-Control-Allow-Origin’] = ‘http://localhost’ headers[‘Access-Control-Allow-Methods’] = ‘POST, GET, OPTIONS’ headers[‘Access-Control-Allow-Headers’] = ‘*, X-Requested-With, X-Prototype-Version, X-CSRF-Token, Content-Type’ headers[‘Access-Control-Max-Age’] = “1728000” end 此方法用作ApplicationController的before_filter 。 对于某些资源,用户必须经过身份validation和授权。 请求通过XHR / Ajax完成。 因此,如果用户未经过身份validation, Devise将向客户端发送401响应,而不是重定向到登录页面。 但是用于设置CORS头的filter不用于该响应。 因此,401响应不会发送给客户端。 我想在客户端捕获并使用401响应。 目前我使用的解决方法是不使用Devise身份validation方法,而是使用自定义身份validation代码段: def authenticate_cors_user if request.xhr? && !user_signed_in? error = { :error => “You must be logged in.” } render params[:format].to_sym […]

如何使用“DELETE”HTTP动词发送请求?

我想在Rails应用程序中的视图中创建一个链接来执行此操作… DELETE /sessions 我该怎么做 添加了复杂function: “会话”资源没有模型,因为它代表用户登录会话。 CREATE表示用户登录, DESTROY表示注销。 这就是为什么URI中没有ID参数。 我正在尝试在UI中实现“注销”链接。

rails如何决定使用PUT或POST方法呈现表单?

Rails生成一个表单部分,可以在get动作呈现的页面和新动作呈现的页面上使用。 如果是前者,则将表单的方法设置为PUT,如果后者将表单的操作设置为POST。 rails如何决定使用哪种方法?

before_filter和respond_to格式

在我的Rails应用程序的控制器中,我可以这样做: before_filter :login_required, :except => :index 但我想不仅根据动作名称而且根据请求的格式应用filter。 换句话说,我想做这样的事情: before_filter :login_required, :except => {:action => :index, :format => :js} 这可能吗?

使用查询字符串的Rails路由

我有一个问题,我需要从GET请求传入的值,我不知道如何设置路由定义。 我的Category对象有一个类型(字符串),一个颜色(字符串)和许多产品。 我想创建一个简单的Web服务,让调用者通过传递Category的类型和颜色来获取所有Category的产品: http://www.myapp.com/getProducts?catType=toy&color=red 要么 ? http://www.myapp.com/categories/getProducts?catType=toy&color=red 如何为这种情况定义正确的路由? 是否有更好的方法以宁静的方式做到这一点……因为我知道Rails是Restful,所以如果有一种方法可以“正确”地做到这一点那么那就更好了。 谢谢

什么是Restful Routing?

我熟悉Ruby On Rails的路由系统,以及Code Igniter和PhpCake如何路由东西,但是除了拥有一个基于目录结构提供路由的集中位置之外,还有更多内容吗? 像这样 controller/action/id/ Admin/editUser/22

哪个浏览器完全支持REST。 意味着Get,Post,PUT和DELETE方法?

哪个浏览器完全支持REST? 意味着Get,Post,PUT和DELETE方法? 我理解了用于理解PUT和DELETE的rails方式是“_method”隐藏变量之类的 — form content — 方法= “PUT”? 还是我错了?

Rails REST路由:资源项ID中的点

我在我的routes.rb中有以下内容: resources :users, :except => [:new, :create] do get ‘friends’, :as => :friends, :on => :member, :to => “users#friends” end 并在我的user.rb中关注: def to_param self.login end 例如,当登录点上的用户(例如’any.thing’)来自facebook时,rails会发出路由错误(找不到路由,我想这是因为它识别了点之后作为格式或路由约束的任何内容)。 我怎么能克服这个错误?

从Rails应用程序中使用REST API

我正在构建我的第一个Rails应用程序,我希望它能够使用REST API中的所有内容。 我想要做的是让Rails作为我的API的前端服务我的Web应用程序。 据我所知(我现在正在盯着Rails),Rails在ORM和直接访问数据库系统方面具有很大的潜力。 另一方面,我的平台的设计方式是通过定义的接口(在本例中为REST API)访问每个层,因此不会从任何客户端读取数据库,而是通过其接口读取数据库。 例如,我的API公开了以下资源: https://api.example.com/v1/users/feature-xxx [GET] 我希望我的网络应用程序有一个像这样的页面: https://example.com/feature 因此,用户将访问此URL,登录后,Rails应用程序将请求数据从我的API生成此动态内容。 问题是: 我的Rails应用程序从HTTP / Rest后端使用其数据的必要步骤是什么? 和, 这对于Rails应用程序来说是一个很好的设计吗? 谢谢!

API的URL设计

我正在为我们的后端工作私人api。 我有一些有关联的集合。 每个集合都可以请求,分页,您也可以请求关联并分页这些关联。 我们不确定要使用哪种url设计…我们正在考虑: /users.json?per_page=10&association=parts,auditions&parts_per_page=5&auditions_per_page=5 /users.json?per_page=10&association[]=parts&association[]=auditions&parts_per_page=5&auditions_per_page=10 /users.json?per_page=10&association[auditions]=true&association[parts][per_page]=5 你怎么看 ? 你会选择哪一个? 为什么? 其中一个看起来不像有效的url方案? 谢谢 !