使用Rails创建Web API

时间:2014-04-28 17:39:18

标签: ruby-on-rails ruby-on-rails-3 asp.net-web-api httparty

尝试实现API调用。控制器里面有什么?我想我应该创建一个API API视图。我应该使用其中一个API宝石吗?

我正在尝试使用我的第一个应用程序写入数据库。我的第二个应用程序将使用Web API从第一个应用程序的uri获取GET / POST,以获取可共享相同数据的字段。

3 个答案:

答案 0 :(得分:2)

看看rabl gem它将帮助您使用当前控制器生成JSON视图。通过此,您可以了解JSON API的工作方式,并继续命名控制API的控制器和路由。对于两个应用之间的http请求,您可以使用httpartytyphoeus gems

答案 1 :(得分:1)

我在RoR中完成了几个Api,这些是我通常采取的步骤:

  1. 创建一个restfull Api:
  2. 我通常为api创建一个控制器,让我们称之为ApiController,我在我的应用程序上执行的所有请求都通过该控制器

    1. 验证api控制器:
    2. 为简单起见,这是一种验证使用api的用户的非安全方式:

      class ApiController < ApplicationController
        before_filter :apiauth
      
        private 
      
        def apiauth
          if request.headers["ApiAuth"]!='IguD7ITC203'
            raise "error"
          end
        end
      end
      
      1. 为你的api创建一些方法和回复:
      2. 这是一个可以在控制器上实现的简单方法:

        def successOrder
          @order=Order.find_by_id(params['id'])
          if @order
            @order.status=params['status']
            if @order.save
              render :json => {:status => "true", :order => {:id => @order.id, :status => @order.status}}
            else
              render :json => {:status =>"false", :errors => @order.errors.full_messages }            
            end 
          else
              render :json => {:status => "false", :errors => ["Invalid Order Id"]}
          end
        end
        
        1. 更新您的路线:
        2. 有时我喜欢为我的api通配我的路线,如下:

          match '/:action', :to => 'api#%{action}', :constraints =>  lambda {|r| r.subdomain.present?  && r.subdomain == 'api'} , :via => [:post]
          

          Finnaly看看像Jbuilder这样的宝石,可以为你的jsons建立你很棒的回应。希望它有所帮助

答案 2 :(得分:0)

我最近创建了一个为移动和Web应用程序提供服务的API。我使用了RABL gem模板系统,我可以根据需要自定义我的API视图。您可以使用RABL从任何ruby对象生成基于JSON和XML的API。