2014-11-12 12 views
5

Relativ neu zu Rails. Ich versuche eine API aufzurufen und sie soll mir eine eindeutige URL zurückgeben. Ich habe HTTParty in meiner App gebündelt. Ich habe einen UniqueNumber-Controller erstellt und ich habe einige HTTParty-Guides gelesen, soweit ich das möchte, aber vielleicht bin ich nur ein bisschen verloren und habe wirklich keine Ahnung, was ich tun soll.Sehr einfache Rails 4.1 API Aufruf mit HTTParty

Im Grunde muss ich nur die API aufrufen, die zurückgegebene URL abrufen und diese URL dann für einen Benutzer in die Datenbank einfügen. Kann mir jemand in die richtige Richtung zeigen oder Code mit mir teilen?

+0

Können Sie etwas über den API-Teil ausarbeiten? ZB ist es eine JSON-basierte API? Welche HTTP-Methode müssen Sie verwenden, um die Daten abzurufen (GET/POST usw.)? Müssen Sie mit dem API-Aufruf Daten senden? usw. – Pete

+0

Ich bin mir nicht sicher auf dem JSON-Teil, denke ich? Ich werde eine E-Mail senden und fragen. Ich sollte nur ein GET reqeust senden können. Ich muss keine Daten mit dem API-Aufruf senden. Jede Anfrage sollte eine neue eindeutige URL zurückspucken – keith

Antwort

7

Nehmen wir an, die API in einem JSON-Format und gibt die Daten wie folgt:

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

Um die Dinge ordentlich zu halten und gut strukturiert, die API-Logik in einem eigenen Klasse gehören soll:

# 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 

dann diese Klasse in der Steuerung nennen:

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 

im Grunde eine Antwort zurückgibt, die HTTParty CO-Objekt enthält die HTTP-Antwortdaten, die sowohl die Header als auch den tatsächlichen Inhalt (.body) enthalten. Der Text enthält eine Reihe von Daten, die Sie beliebig verarbeiten können. In diesem Fall analysieren wir die Zeichenfolge als JSON in einen Ruby-Hash. Wenn Sie die HTTP-Anfrage an die API anpassen müssen, können Sie alle Optionen in der HTTParty documentation sehen.

+0

Nachdem ich es jetzt für ein bisschen Zeit verpatzt habe @peter bin ich mir nicht sicher, wie ich den Code wirklich ausführen soll? Was ich tun möchte, ist, wenn ein Benutzer bei der Anmeldung eine Übermittlungsschaltfläche anklickt, die API-URL automatisch anfordert und sie in das URL-Feld in der Datenbank verschiebt. Ist das sinnvoll? Ich verwende zur Zeit Geräte in meiner App, um Benutzeranmeldungen usw. zu verwalten. – keith