【问题标题】:Very Basic Rails 4.1 API Call using HTTParty使用 HTTParty 的非常基本的 Rails 4.1 API 调用
【发布时间】:2015-01-09 22:22:07
【问题描述】:

Rails 相对较新。我正在尝试调用一个 API,它应该向我返回一个唯一的 URL。我的应用程序中捆绑了 HTTParty。我已经创建了一个 UniqueNumber 控制器,并且我已经阅读了几个 HTTParty 指南,但我可能只是有点迷茫,真的不知道该怎么做。

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

【问题讨论】:

  • 您能详细说明一下 API 部分吗?例如,它是基于 JSON 的 API 吗?您需要使用什么 HTTP 方法来获取数据(GET/POST 等)?您是否需要通过 API 调用发送任何数据?等等
  • 我不确定 JSON 部分,我想是吗?我会发邮件问问。我应该能够发送一个 GET 请求。我不需要通过 API 调用发送任何数据。每个请求都应该返回一个新的唯一 url

标签: ruby-on-rails ruby api httparty ruby-on-rails-4.1


【解决方案1】:

假设 API 是 JSON 格式并返回如下数据:

{"url": "http://example.com/unique-url"}

为了保持整洁和结构良好,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

然后在控制器中调用那个类:

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

基本上,HTTParty 返回一个响应对象,其中包含 HTTP 响应数据,其中包括标头和实际内容 (.body)。正文包含一串数据,您可以随意处理。在本例中,我们将字符串作为 JSON 解析为 Ruby 哈希。如果您需要自定义对 API 的 HTTP 请求,您可以看到 HTTParty documentation 中的所有选项。

【讨论】:

  • 在搞砸了一段时间之后@peter 我不确定如何让它真正运行代码?我想做的是,当用户在注册时点击提交按钮时,它会自动请求 API URL 并将其推送到数据库中的 URL 字段中。那有意义吗?我目前在我的应用程序中使用设计来处理用户注册等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 2011-11-19
相关资源
最近更新 更多