2010-09-11 14 views
29

क्या कोई जानता है कि RestClient के साथ मूल प्रमाणीकरण कैसे करें?मैं RestClient के साथ मूल प्रमाणीकरण कैसे करूं?

मुझे अपने रीस्टफुल एपीआई के माध्यम से गिटहब पर एक निजी भंडार बनाने की आवश्यकता है।

उत्तर

15

source से ऐसा लगता है कि आप अपने अनुरोध ऑब्जेक्ट के हिस्से के रूप में केवल उपयोगकर्ता और पासवर्ड निर्दिष्ट कर सकते हैं।

r = Request.new({:user => "username", :password => "password"}) 

इसके अलावा, अगर आप ReadMe की शैल खंड में नीचे देखो यह restshell के हिस्से के रूप में यह निर्दिष्ट करने का एक उदाहरण है:

आप की तरह कुछ कोशिश की है।

RestClient.get "http://username:[email protected]" 
+0

इसे सुधारने के लिए उपयोग में मॉड्यूल को शामिल करने पर विचार करें। जैसे 'RestClient :: Request' और उदाहरण को बनाने के लिए अधिक संदर्भ जोड़ना जो आपने पूरी तरह कार्यात्मक –

40

सबसे आसान तरीका है URL में विवरण एम्बेड करने के लिए है यूआरएल:

def get_collection(path) 
    response = RestClient::Request.new(
    :method => :get, 
    :url => "#{@my_url}/#{path}", 
    :user => @my_user, 
    :password => @my_pass, 
    :headers => { :accept => :json, :content_type => :json } 
).execute 
    results = JSON.parse(response.to_str) 
end 

ध्यान दें कि यदि @my_user और @mypass instantiated नहीं कर रहे हैं, यह BasicAuth बिना ठीक काम करता है है।

+0

दिया है, मैं खोज रहा था कि RestClient :: अनुरोध प्रारंभ किए बिना प्रमाणीकरण कैसे करें। RestClient.get विधि के उपयोग के लिए +1। लेकिन उपयोगकर्ता नाम और पासवर्ड से बचने की आवश्यकता नहीं है? ऐसा लगता है कि यह उतना आसान नहीं है जितना लगता है। – AgostinoX

+2

क्या होगा यदि मेरे उपयोगकर्ता नाम के पास '@' वर्ण है? – Sai

+0

... लेकिन अगर आपके पास अपने पासवर्ड में # जैसे विशेष अक्षर हैं तो आपको एक्सीटियन मिल गया है: अमान्यURIError: खराब यूआरआई (यूआरआई नहीं है?) – territorial

28

यहाँ काम करने वाले कोड का एक उदाहरण है जहाँ मैं वैकल्पिक BasicAuth समर्थन लेकिन उपयोगकर्ता और पासवर्ड में एम्बेड किया जा ज़रूरत नहीं पड़ती:

$ restclient https://example.com user pass 
>> delete '/private/resource' 
संबंधित मुद्दे