我想构建一个可以从网络浏览器访问的应用程序,也可以从智能手机访问。
这样做的最佳方法是什么,这是我想到的2个选项:
构建将为浏览器提供服务的rails服务器,并且还将成为移动应用程序的rest api。
构建一个单独的rest API服务器,可以从移动应用程序访问,也可以从rails web服务器访问。
答案 0 :(得分:10)
保留1个应用服务器(运行Rails)
-
<强> API 强>
Rails具有非常强大的结构,您可以使用它来简单地创建RESTful API:
#config/routes.rb
namespace :api do
resources :posts #-> domain.com/api/posts
end
#app/controllers/api/posts_controller.rb
Class API::PostsController < ApplicationController
respond_to :json
# ... your methods here
end
这将允许您发送所需的请求
-
snarf
所述的第二部分是约mime types
。 Rails通过ActionDispatch::Http::MimeNegotiation
中间件,允许您处理不同的类型请求,使您能够以最有效的方式处理api
这意味着您只能向json
控制器发出api
次请求 - 这意味着在开发移动应用时,您可以将api
请求发送到您的Rails服务器,而不是一个单独的API
个。
-
<强>建议强>
我强烈建议使用单个服务器,运行rails
有几个原因:
- 在Rails中创建API实际上非常简单
- 使用一台服务器可以让您在一个地方处理所有数据
- 保持单个服务器还可确保所有平台的用户真实性
醇>
答案 1 :(得分:3)
这可以通过一台服务器轻松完成。
请参阅:ActionController::MimeResponds
在您的控制器中:
class PeopleController < ApplicationController
def index
@people = Person.all
respond_to do |format|
format.html
format.json { render json: @people }
end
end
...
通过这种方式,您可以使用数据格式(在本例中为 html 或 json )回复控制器收到的请求类型。
http://mydomain.com/people.json
或
http://mydomain.com/people.html