2014-11-12 16 views
5

Rails nispeten yeni. Bir API'yi aramaya çalışıyorum ve bana benzersiz bir URL vermesi gerekiyor. Uygulamamda paketlenmiş HTTParty var. Bir UniqueNumber denetleyicisi oluşturdum ve istediğim kadar çok HTTParty kılavuzları okudum ama belki biraz kayboldum ve gerçekten ne yapacağımı bilmiyorum.Çok Temel Raylar 4.1 API Çağrı HTTParty kullanarak

Temel olarak, tek yapmam gereken API'yı çağırmak, döndürdüğü URL'yi almak, ardından bu URL'yi bir kullanıcı için veritabanına eklemek. Biri bana doğru yönde işaret edebilir mi yoksa benimle bazı kodları paylaşabilir mi?

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

API mantığı bu kendi sınıfında ait olmalıdır iyi yapılandırılmış şeyin düzenli ve Kime::

+0

API parçasında biraz detaylandırır mısınız? E.g JSON tabanlı bir API mı? Verileri (GET/POST vb.) Almak için hangi HTTP yöntemini kullanmanız gerekiyor? API çağrısı ile herhangi bir veri göndermeniz gerekiyor mu? vb – Pete

+0

JSON bölümünde emin değilim, öyle mi? Soran bir e-posta göndereceğim. Bir GET requstu gönderebilmeliyim. API çağrısı ile herhangi bir veri göndermem gerekmiyor. Her istek yeni bir benzersiz URL'yi tükürmelidir – keith

cevap

7

API bir JSON biçiminde olup şöyle verileri döndürür varsayalım

# 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 

Daha sonra kontrol cihazı bu sınıf çağırır:

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 

Temelde HTTParty bir yanıt bu co nesne döndürür hem üstbilgileri hem de gerçek içeriği (.body) içeren HTTP yanıt verilerini belirtir. Gövde, istediğiniz gibi işleyebileceğiniz bir veri dizesi içerir. Bu durumda dizeyi JSON olarak Ruby hash olarak ayrıştırıyoruz. HTTP isteğini API'ye uyarlamanız gerekiyorsa, HTTParty documentation'daki tüm seçenekleri görebilirsiniz.

+0

Şimdi biraz zaman uğraştıktan sonra @peter Aslında kodu nasıl çalıştıracağımı emin değilim? Ne yapmak isterim, bir kullanıcı kaydolurken gönder düğmesine bastığında, otomatik olarak API URL'sini ister ve veritabanındaki URL alanına gönderir. bu mantıklı mı? Şu anda kullanıcı kayıtlarını vb. Ele almak için uygulamamda kullanıyorum. – keith