Tag: api

使用active_model_serializers实现API版本控制的正确方法

我知道已经存在一些问题,而且这是一个关于AMS不能有效处理命名空间 (这种版本控制方法使用) 的开放性问题,但我想确保我在当前约束内处于正确的轨道。 现在我正在使用Rails 5和AMS 0.10.1,所以我做了以下事情: # config/initializers/active_model_serializer.rb ActiveModelSerializers.config.serializer_lookup_enabled = false 禁用默认的序列化程序查找(无论如何都不起作用); 和 # app/controllers/application_controller.rb class ApplicationController < ActionController::API def get_serializer(resource, options = {}) unless options[:each_serializer] || options[:serializer] then serializer = (self.class.name.gsub("Controller","").singularize + "Serializer").constantize resource.respond_to?(:to_ary) ? options[:each_serializer] = serializer : options[:serializer] = serializer end super(resource, options) end end 覆盖默认情况下如何找到序列化程序; 我的控制器和序列化器是这样的: # app/controllers/api/v2/api_controller.rb module Api::V2 class […]

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 […]

如何在使用API​​密钥时跳过Devise身份validation?

我正在我的应用程序上使用Devise,并希望创建一个全局API密钥,可以访问任何人的帐户的JSON数据,而无需登录。 例如,假设我的API密钥是1234 ,我有两个用户创建了两个不同的餐厅。 用户1 – 餐厅1(/餐厅/ 1) 用户2 – 餐厅2(/餐厅/ 2) 我打开一个全新的浏览器,没有登录任何东西,我传入我的URL …/restaurants/2.json?api_key=1234 ,我应该能够访问该餐厅的JSON数据,而无需登录- 作为用户2 什么是最好的方法呢? 我已经按照Railscast#352保护API,所以我可以通过传入API密钥来访问JSON的东西,但我必须登录才能看到任何内容。 编辑1:使用CanCan 我应该提一下,我也在使用CanCan作为角色,但不确定在这种情况下是否会扮演任何角色(双关语)。 编辑2:使用API​​版本控制 我按照Railscast#350和#352教你如何创建REST API版本以及如何使用API​​密钥保护它。 这是我的controllers / api / v1 / restaurants / restaurants_controller.rb的样子: module Api module V1 class RestaurantsController < ApplicationController before_filter :restrict_access respond_to :json def index respond_with Restaurant.all end def show respond_with Restaurant.find(params[:id]) end private def […]

API调用在哪里进入rails MVC框架项目的ruby?

我在带有mvc框架的Ruby on Rails中有一个应用程序。 截至目前,我在控制器中有API调用,但不认为这是他们的正确位置。 我的所有API调用应该包含哪种文件? 谢谢 def getDetails(id) api_response = HTTParty.get(base_uri, :query => {:DID => id, :DeveloperKey => devKey}) @json_hash = api_response.parsed_response return @json_hash end

使用RABL从Rails 3应用程序返回不完整的响应正文

我使用Rails 3和RABL构建了一个JSON API API运行良好但在特定请求中仅返回部分数据 – 其余的JSON被截断。 由于JSON因此无效,因此依赖于API的移动应用程序崩溃。 任何人都可以想到为什么身体被切断一定的大小并指出我正确的方向来解决问题? 谢谢

修复“您已在此页面上多次添加Google Maps API。 这可能会导致意外错误。“

我在标题中包含了两个以下脚本,我收到错误“您已在此页面上多次包含Google Maps API。这可能会导致意外错误。” 当我删除任何一个脚本时,我会得到额外的js错误。 如何在rails应用程序中正确地重构这两个脚本?

使用Rails将外部JSON保存到DB

我正在使用gem“httparty”对外部源进行GET调用; 这是我的Controller.rb: def show response = HTTParty.get(‘URI’) user = JSON.parse(response) user.each {|line| puts line[‘user’][‘id’]} #the “[‘user’][‘id’]” is because of the nested JSON object that is returned after the parse. end 这会在我的rails控制台中返回正确的输出,但现在的问题是如何将[‘id’]保存到我的数据库中? 目前,我的用户模型有:id和:name; 来自外部API的JSON对象发送:id和:name以及一些我不需要的其他信息。 class User < ActiveRecord::Base attr_accessor :id, :name end 任何帮助表示赞赏,谢谢!

从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方案? 谢谢 !

使用Grape和Devise进行用户身份validation

我很难理解并在API中正确实现用户身份validation 。 换句话说,我很难理解Grape API与Backbone.js,AngularJS或Ember.js等前端框架的集成。 我试图调整所有不同的方法,并阅读了很多相关内容,但谷歌给我带来了真正糟糕的资源,在我看来,就像在这个主题上没有真正好的文章 – 使用Devise和前端的Rails和用户身份validation框架 。 我将描述我目前的支点,我希望你能就我的实施提供一些反馈,并指出我正确的方向。 目前的实施 我有跟随Gemfile的后端Rails REST API (我会故意缩短所有文件代码) gem ‘rails’, ‘4.1.6’ gem ‘mongoid’, ‘~> 4.0.0’ gem ‘devise’ gem ‘grape’ gem ‘rack-cors’, :require => ‘rack/cors’ 我当前的实现只有具有以下路由的API( routes.rb ): api_base /api API::Base GET /:version/posts(.:format) GET /:version/posts/:id(.:format) POST /:version/posts(.:format) DELETE /:version/posts/:id(.:format) POST /:version/users/authenticate(.:format) POST /:version/users/register(.:format) DELETE /:version/users/logout(.:format) 我创建了以下模型user.rb class User include Mongoid::Document […]