【问题标题】:Building a backend for mobile and web为移动和 Web 构建后端
【发布时间】:2014-06-14 20:22:33
【问题描述】:

我想构建一个可以通过网络浏览器访问,也可以通过智能手机访问的应用程序。

最好的方法是什么,这是我正在考虑的 2 个选项:

  1. 构建一个为浏览器提供服务的 Rails 服务器,同时也是移动应用的一个 Rest api。

  2. 构建一个单独的 REST API 服务器,可从移动应用程序访问,也可从 Rails Web 服务器访问。

你怎么看?我相信这应该是相当标准的。 你还有什么构建它的想法吗?

【问题讨论】:

  • 选项 2 更好,构建一个 API 服务于两个平台。但是,如果您正在考虑使用用户身份验证/登录功能构建本机移动应用程序,那么这可能会很痛苦,但并非不可能。如果不是,那么应该直接从一台服务器为两个平台使用 API

标签: ruby-on-rails design-patterns architecture smartphone


【解决方案1】:

使用 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

这将允许您发送您需要的请求

--

MIME Types

第二部分是关于mime types,如snarf所述。 Rails 通过ActionDispatch::Http::MimeNegotiation 中间件允许您处理不同类型的请求,让您能够以最有效的方式处理api

这意味着您只能允许 json 请求到您的 api 控制器 - 这意味着当您开发移动应用程序时,您可以将 api 请求发送到您的 Rails 服务器,而不是单独的 API 请求.

--

推荐

我强烈建议使用单个服务器,运行 rails

这有几个原因:

  1. 在 Rails 中创建 API 实际上非常简单
  2. 使用一台服务器可以在一个地方处理所有数据
  3. 保持单一服务器还可以确保跨所有平台的用户真实性

【讨论】:

    【解决方案2】:

    这可以通过一台服务器轻松完成。

    见:ActionController::MimeResponds

    在您的控制器中:

    class PeopleController < ApplicationController
      def index
        @people = Person.all
    
        respond_to do |format|
          format.html
          format.json { render json: @people }
        end
      end
      ...
    

    通过这种方式,您可以响应数据格式(在本例中为 htmljson)依赖于您的控制器收到的请求类型。

    http://mydomain.com/people.json

    http://mydomain.com/people.html

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 2014-07-16
      • 2017-10-25
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 2017-09-19
      相关资源
      最近更新 更多