使用HTTParty进行非常基本的Rails 4.1 API调用

kei*_*ith 5 ruby api ruby-on-rails httparty ruby-on-rails-4.1

Rails相对较新.我试图调用一个API,它应该返回一个唯一的URL给我.我在我的应用程序上捆绑了HTTParty.我已经创建了一个UniqueNumber控制器,我已经阅读了几个HTTParty指南,只要我想要的东西,但也许我只是有点迷失,真的不知道该怎么做.

基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入数据库中供用户使用.有人能指出我正确的方向或与我分享一些代码吗?

Pet*_*ete 9

我们假设API采用JSON格式并返回如下数据:

{"url": "http://example.com/unique-url"}
Run Code Online (Sandbox Code Playgroud)

为了保持整洁和良好的结构,API逻辑应该属于它自己的类:

# lib/url_api.rb
require 'httparty'

class UrlApi
  API_URL = 'http://example.com/create'

  def unique_url
    response = HTTParty.get(API_URL)
    # TODO more error checking (500 error, etc)
    json = JSON.parse(response.body)
    json['url']
  end
end
Run Code Online (Sandbox Code Playgroud)

然后在控制器中调用该类:

require 'url_api'

class UniqueNumberController < ApplicationController
  def create
    api = UrlApi.new()
    url = api.unique_url

    @user = # Code to retrieve User
    @user.update_attribute :url, url
    # etc
  end
end
Run Code Online (Sandbox Code Playgroud)

基本上,HTTParty返回一个响应对象,该对象包含HTTP响应数据,其中包括标题和实际内容(.body).正文包含您可以根据需要处理的数据字符串.在这种情况下,我们将字符串解析为JSON为Ruby哈希.如果您需要自定义对API的HTTP请求,您可以查看HTTParty文档中的所有选项.