Tag: rest

从ActiveResource请求中删除.xml扩展名

我正在尝试使用ActiveResource来使用来自第三方API的xml数据。 我可以使用RESTClient应用程序成功进行身份validation和发出请求。 我编写了我的应用程序,当我提出请求时,我收到404错误。 我补充说: ActiveResource::Base.logger = Logger.new(STDERR) 到我的development.rb文件并找出问题所在。 API使用xml数据响应不以xml结尾的请求。 EG,这适用于RESTClient: https://api.example.com/contacts 但ActiveResource正在发送此请求 https://api.example.com/contacts.xml 无论如何,从ActiveResource生成的请求中删除扩展名是否“很好”? 谢谢

在RESTful响应中排除私有数据

如果请求它的用户不能查看所有数据,那么在RESTful响应中排除某些字段/数据的最佳做法是什么? 例: 人具有名字 , 姓氏和出生日期 。 经过身份validation和未经身份validation的用户都可以向/people.xml发出RESTful请求以获取完整的人员列表。 但是,只有经过身份validation的用户才能查看所有信息。 未经过身份validation的用户应仅返回“姓氏和姓氏”字段(不包括“出生日期”数据)。 Person控制器是否应该在构建响应之前检查身份validation? 如果用户通过身份validation,他们会获得所有内容,否则他们只获得一个子集 这会破坏REST的任何规则,其中/people.xml可以发送两个单独的结果吗?

如何为状态机或有限自动机实现RESTful资源

我是一个Rails和REST新手,我试图找出如何最好地公开由具有状态机的域对象支持的资源(换句话说,是一个有限的自动机)。 我已经看到了许多用于使模型类成为状态机的gem,例如aasm,过渡,工作流,但它们都没有记录它们如何在面向资源的控制器中实际使用的示例。 它们似乎都暗示状态转换是由“事件”触发的,这实际上是一种方法调用。 我对这意味着的一些问题是: 更新操作(PUT方法)不合适,因为PUT被认为是幂等的。 唯一可行的是,如果州是作为代表的一部分发送的。 这与“事件”不一致。 它是否正确? 由于事件不是幂等的,因此必须使用POST。 但是,到哪个资源? 每个可能的事件都有子资源吗? 或者,是否有一个(/ updatestate)将触发事件和事件的任何参数作为其表示? 由于资源的状态是由另一个资源可能触发的事件修改的,因此create action是否应该接受对state属性(或依赖于状态机的任何其他属性)的更改? [更新的问题]在UI中公开转换的好方法是什么? 由于事件不是状态,因此似乎允许更新状态属性(以及依赖于状态转换的任何其他属性)是没有意义的。 这是否意味着在更新操作中应忽略这些属性?

在Rails中添加自定义格式(将与respond_to一起使用)

我有map.resources :posts ,我希望能够以markdown格式提供邮件正文。 所以我设置了respond_to块: respond_to do |format| format.markdown { render :text => @post.body.to_s } end 但是当我尝试访问/posts/1234.markdown ,我收到此错误: NameError (uninitialized constant Mime::MARKDOWN): app/controllers/posts_controller.rb:96:in `show’ app/controllers/posts_controller.rb:79:in `show’ 如何将降价添加为可接受的格式? 我在哪里可以看到可接受的格式列表?

如何通过curl发布数组值?

我喜欢测试API后端,其设计如下例所示: http://localhost:3000/api/v1/shops/1.json JSON响应: { id: 1, name: “Supermarket”, products: [ “fruit”, “eggs” ] } 这是相应的型号: # app/models/shop.rb class Shop < ActiveRecord::Base extend Enumerize attr_accessible :name, :products serialize :products, Array enumerize :products, in: %w{fruit meat eggs}, multiple: true resourcify validates :name, presence: true, length: { in: 5..50 } validates :products, presence: true end 我想使用curl来测试创建和更新条目。 因此,我使用以下命令: 创建: […]

AngularJS Restful Routing

我正在尝试使用Restful / Ruby convension //[method]/[id]构建我的应用程序。 以前在使用像CodeIgniter这样的服务器端MVC框架时,我是如何基于URI动态路由的: 恩。 www.foo.com/bar/baz/1 然后应用程序将在控制器/类bar使用方法baz并返回views/bar/baz.php (填充来自bar->baz数据) 我想在Angular中做同样的事,但我不确定它是否支持这个(如果确实如此,我不确定如何去做)。 目前我正在使用$routeProvider的when方法来指定每个案例。 $ location.path()看起来可能有我需要的东西,但我不认为我可以在app.js使用它(在config() )。 我想做的是这样的: .config([ ‘$routeProvider’, function($routeProvider) { $routeProvider .when(// controller exists resource+’/’+method, { “templateURL”: “views/” + resource + “/” + method + “.html”, “controller”: resource } ).otherwise({ “redirectTo”:”/error” }); } ]); 并且路由器自动调用适当的方法。 编辑另外,当我指定when(‘/foo/bar’, {…})时,为什么$ routeProvider会惊慌失措 ? 编辑2 Per Lee的建议,我正在考虑做这样的事情: $routeProvider .when( ‘/:resource/:method/:id’, […]

如何在MVC下创建简洁的RESTful向导?

我尝试在构建应用程序时尽可能保持RESTful,但有一点我不知道如何创建向导类型的工作流程,RESTful和简洁。 例如,采用多页注册流程。 选项1:我可以为每个步骤创建一个控制器,并在用户进入该步骤(或返回到该步骤)时调用new或edit。 我以step1_controller,step2_controller等结束… 选项2:我可以使用参数,会话变量,状态机 – 无论如何创建一个控制器并跟踪它们在注册过程中的位置。 所以我有signup_controller / step?id = 1 第一个选项是严格的REST,但不是很简洁,最后是一些额外的控制器。 第二个选项更简洁,但打破REST,我愿意这样做,但我不会掉以轻心。 有更好的选择吗? 我在rails上使用ruby,但是这个问题适用于其他MVC实现,比如ASP.NET MVC

RESTful Web服务与数据密集型应用程序的套接字编程

我正在使用Ruby on Rails构建一个Web应用程序,它需要具有高度可伸缩性。 在此应用程序中,数据由移动客户端(大约20个字节)每秒产生。 所有这些数据必须在某个时刻传输到服务器,最好是尽快。 要完成此任务,我希望服务器充当RESTful服务。 客户端可以缓冲位置(例如每5到30秒),然后将其作为HTTP put请求进行拍摄,然后服务器可以存储它们。 我相信这个模型更容易实现,并且更好地处理大量流量,因为客户端可以保持缓冲数据,直到他们听到服务器的响应。 另一方面,我的老板想要使用套接字编程来实现服务器。 他认为套接字编程将导致更少的数据传输,这将提高系统的总效率。 我不能不同意这一点,但我认为考虑到现代带宽,HTTP的额外开销是值得的。 另外,我认为尝试维护数千(或数百万)的用户同时连接会导致自身问题,并大大增加服务器的复杂性。 老实说,我不知道解决这个问题的正确方法,所以我想我会把它发布在这里并得到比我更聪明的人的意见。 如果有任何答案包括所提出的解决方案的优缺点,我将不胜感激。 谢谢。 更新 我们现在已经刷新了一些额外的要求。 首先,移动客户端每月无法上传超过5 GB的数据。 在这种情况下,我们每个月每天八小时通话一条消息。 其次,我们希望尽可能少地组合消息。 这是为了确保移动客户端发生某些事情(比如车祸),我们会尽可能少地丢失数据。

为rails应用程序构建iphone客户端的最佳方法是什么?

我有一个相当标准的rails应用程序,并希望能够从iPhone应用程序访问基本的CRUD(创建,更新,删除)操作以及我添加的查询。 Rails或多或少开箱即可为这些操作提供REST API。 在iphone上处理REST / XML部分的最佳方法是什么,是否有任何好的Objective-C库已经做过这种事情了? 操作还需要与特定用户相关联(即经过身份validation)。

Rails 4 嵌套资源和浅:真

以下post基于Rails 4。 我实际上正在寻找关于多个嵌套资源(超过1个)的良好最佳实践,并且选项浅:true。 首先在我的路线中,有这样的: resources :projects do resources :collections end 相关的路线是: project_collections GET /projects/:project_id/collections(.:format) collections#index POST /projects/:project_id/collections(.:format) collections#create new_project_collection GET /projects/:project_id/collections/new(.:format) collections#new edit_project_collection GET /projects/:project_id/collections/:id/edit(.:format) collections#edit project_collection GET /projects/:project_id/collections/:id(.:format) collections#show PATCH /projects/:project_id/collections/:id(.:format) collections#update PUT /projects/:project_id/collections/:id(.:format) collections#update DELETE /projects/:project_id/collections/:id(.:format) collections#destroy projects GET /projects(.:format) projects#index POST /projects(.:format) projects#create new_project GET /projects/new(.:format) projects#new edit_project GET /projects/:id/edit(.:format) projects#edit project […]