Assumiamo l'API è in un formato JSON e restituisce i dati in questo modo:
{"url": "http://example.com/unique-url"}
per mantenere le cose in ordine e ben strutturato, la logica API dovrebbe appartenere a essa la propria classe:
# 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
Quindi chiamare quella classe nel controller:
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
Fondamentalmente HTTParty restituisce una risposta obiettare che co ottiene i dati di risposta HTTP che includono sia le intestazioni che il contenuto effettivo (.body
). Il corpo contiene una stringa di dati che puoi elaborare a tuo piacimento. In questo caso, stiamo analizzando la stringa come JSON in un hash di Ruby. Se è necessario personalizzare la richiesta HTTP per l'API, è possibile visualizzare tutte le opzioni nello HTTParty documentation.
Potresti elaborare un po 'sulla parte API? E. è una API basata su JSON? Quale metodo HTTP è necessario utilizzare per ottenere i dati (GET/POST, ecc.)? Hai bisogno di inviare dati con la chiamata API? ecc. – Pete
Non sono sicuro della parte JSON, penso di si? Invierò un'email chiedendo. Dovrei essere in grado di inviare semplicemente un reqeust GET. Non è necessario inviare alcun dato con la chiamata API. Ogni richiesta dovrebbe sputare un nuovo URL univoco – keith