Net :: HTTP kann für den Standard-Anwendungsfall ziemlich umständlich sein!Gibt es eine benutzerfreundlichere Alternative zu Net :: HTTP für die Interaktion mit REST-APIs?
Antwort
Dies ist, was ich verwende: http://rubyforge.org/projects/restful-rails/.
rest-open-uri ist derjenige, der stark in der RESTful Web Services Buch verwendet wird.
gem install rest-open-uri
Beispiel Nutzung:
response = open('https://wherever/foo',
:method => :put,
:http_basic_authentication => ['my-user', 'my-passwd'],
:body => 'payload')
puts response.read
Wenn Sie nur mit REST zu tun haben, die rest-client Bibliothek ist fantastisch.
Wenn die APIs, die Sie verwenden, nicht vollständig RESTful sind - oder selbst wenn sie - HTTParty ist wirklich einen Besuch wert. Es vereinfacht die Verwendung von REST-APIs und nicht RESTful-Web-APIs. Überprüfen Sie den Code aus (aus den obigen Link kopiert):
require 'rubygems'
require 'httparty'
class Representative
include HTTParty
format :xml
def self.find_by_zip(zip)
get('http://whoismyrepresentative.com/whoismyrep.php', :query => {:zip => zip})
end
end
puts Representative.find_by_zip(46544).inspect
# {"result"=>{"n"=>"1", "rep"=>{"name"=>"Joe Donnelly", "district"=>"2", "office"=>"1218 Longworth", "phone"=>"(202) 225-3915", "link"=>"http://donnelly.house.gov/", "state"=>"IN"}}}
HyperactiveResource in den Kinderschuhen, aber es sieht ziemlich gut.
Ich bin ein großer Fan von rest-client, die gerade genug, um nützlich zu sein, ohne in der Art Ihrer Implementierung. Es behandelt Ausnahmen intelligent und unterstützt das Loggen und Authentifizieren von Out-of-the-Box.
Werfen Sie einen Blick auf Asplakes (dh meine) beschrieben _ Routen und Pfad zu Projekten/Gems auf github (die ich nicht scheinen kann, von hier zu verknüpfen. Path-to verwendet HTTParty, aber nicht hart-codiert URLs wie einige der anderen Antworten auf diese Frage, verwendet es Metadaten von _ beschrieben Routen.Es gibt mehrere Artikel beschreibt diese Edelsteine auf positincline.com, von denen die für Ihre Frage am relevantesten ist
Nun, da ist immer ActiveResource, sofern Sie auf Rails sind :)
Nicht mehr ... –
- 1. Gibt es eine Python-Bibliothek für die Interaktion mit Genesys?
- 2. Gibt es eine Java-Alternative zu Ploehs AutoFixture für .Net?
- 3. Gibt es eine Alternative zu Android ViewOverlay?
- 4. Gibt es eine einfache Alternative zu Readline?
- 5. Gibt es eine Alternative zu rexec für Python-Sandboxing?
- 6. Gibt es eine Alternative zu ITScriptNet?
- 7. Gibt es eine Alternative für getRunningTask API
- 8. Gibt es eine Alternative zu HTML Tidy?
- 9. PDFlib für PHP, gibt es eine Alternative
- 10. Gibt es Fis Alternative (non-.Net) Implementierungsprojekten?
- 11. Gibt es eine SCP-Alternative für PowerShell?
- 12. Gibt es eine bessere Alternative zu CGContext?
- 13. Gibt es eine Alternative zu JavaScript-Schleife?
- 14. Gibt es eine Alternative zu "Float" für einen Flex-Container?
- 15. Gibt es eine bessere Alternative zu Console.ReadKey()?
- 16. Gibt es eine JavaScript-Alternative zu isNaN()?
- 17. Gibt es eine gute Alternative zu WebSVN?
- 18. Gibt es eine Alternative zu cushycms?
- 19. Gibt es eine suPHP-Alternative?
- 20. OpenGL zu schwer für mich, gibt es eine Alternative?
- 21. Gibt es eine Alternative zu .htaccess für GitHub Pages?
- 22. Gibt es eine Alternative zu CoreBluetooth für OSX
- 23. Gibt es eine bessere Alternative zu PureMVC für Flash-Projekte?
- 24. Gibt es eine Transliterationsbibliothek für .NET?
- 25. Gibt es eine Alternative zu NestedScrollView für die Verwendung mit einem WebView?
- 26. gibt es eine Alternative zu DOMAttrModified, die in Webkit funktioniert
- 27. Gibt es eine DbUnit-Alternative, die mit MongoDB funktioniert?
- 28. Alternative zu HTTP-Cookies?
- 29. Ist es eine schlechte Übung, Elementen, die nicht für die Interaktion erstellt wurden, eine Interaktion hinzuzufügen?
- 30. Gibt es eine C# -Alternative zu Javas Vararg-Parametern?
Mein einziges Problem mit HTTParty ist, dass es einen Hash zurückgibt, anstatt das XML zu analysieren und ein Array von 'Re zurückzugeben Präsentation von Objekten mit Attributen Accessoren. Anstatt den Hash von find_by_zip zurückzugeben, habe ich selbst eine Reihe von Repräsentativen Objekten erstellt und diese zurückgegeben. –