Voglio testare l'api REST sul mio sito Rails. Qual è il modo più semplice/migliore per farlo con il framework di test delle rotaie? Sto solo facendo le cose di risorse standard, quindi mi chiedo in particolare, dal momento che questo è così standard di bog, se c'è un modo automatico per testare questa roba.Il modo migliore per testare le API REST XML?
risposta
Consiglierei l'uso di Cetriolo. Cucumber emula un browser e puoi verificare i risultati ottenuti. Funziona bene per richieste XML, JSON e semplici HTML vecchi.
Se stai cercando di testare le API che hai creato manualmente, puoi provare questo! Sembra funzionare bene!
REST Client - Simply Test REST APIs
Non si può fare il test automatizzato con questo però!
Questo non è realmente REST se gli URI sono disponibili come parte dell'API. Può esistere solo l'URI del punto di ingresso in un'API RESTful. – aehlke
Questo non è automatizzato ma è davvero ottimo per vedere cosa sta facendo la tua API.
Mi piacerebbe dare loro il tuo nome utente/password per le richieste autorizzate. Suggerirei di prendere il codice e installarlo per uso privato in quel caso. https://github.com/defunkt/hurl –
Usiamo RESTClient un add-on Firefox per visitare e servizi di prova REST.
https://addons.mozilla.org/en-US/firefox/addon/9780
Abbiamo utilizzato questo nella mia squadra per un paio di mesi e non credo che siamo riusciti a fare il nostro lavoro senza di essa. È molto facile da installare e da usare e amichevole da usare.
Se si ottiene l'ultima versione da Sourceforge, è disponibile anche il supporto Oauth, che non ho trovato in nessun altro client REST.
http://sourceforge.net/projects/restclient/develop
Uno, di molti, vantaggi dell'utilizzo di un add-on Firefox è che è plattform croce. Utilizziamo lo stesso strumento (RESTclient) per tutti i membri del nostro team anche se utilizziamo sistemi operativi diversi (Mac, Linux, Windows).
Si può provare curl
uso --form-string
per passare i dati del modulo al server di
(1)
curl --form-string "book_key=BOOK1234" --form-string "author=Gandhi" -X PUT 'http://localhost:3000/api/show_all_books_of_a_particular_author?params1=value1¶m2=value2'
Nel controllore si otterrà params['book_key']=BOOK1234
e params["author"]="Gandhi"
uso -F "[email protected];type=application/msword;"
(2)
curl -F "[email protected]_experiments_with_truth.pdf;type=application/pdf;" --form-string "author=Gandhi" --form-string "[email protected]" -X PUT 'http://localhost:3000/api/submit_a_pdf_book?params1=value1¶m2=value2'
Nel controllore si otterrà params['email]="[email protected]"
e params["author"]="Gandhi"
e params["document"] = "File(object)"
. Funziona solo se test.doc
si trova nella directory corrente. Non dimenticare di passare mime-type
poiché il server potrebbe prenderlo come "application octet-stream"
e devi scrivere sul codice per gestirlo separatamente.
Ho arrotolato la mia soluzione e ho pensato che sarebbe stato utile.Ho scritto un modulo che utilizza le gemme json, curb e addressable per inviare richieste GET, PUT, POST e DELETE a localhost: 3000. Può richiedere XML (come la domanda originale richiesta) o JSON. Restituisce il corpo della risposta come un hash. È principalmente un involucro attorno alla gemma del marciapiede, che credo abbia una sintassi orrenda.
Si noti che sto caricando automaticamente il mio api_key
. Questo può essere disabilitato passando :api_key => false
o rotto utilizzando api_key => "wrong"
. Potresti voler lasciarlo fuori o modificarlo per adattarlo al tuo schema di autenticazione.
Ecco il modulo:
module ApiTesting
# requres the json, curb, and addressable gems
require "addressable/uri"
def api_call(path, verb, query_hash={}, options={})
options.reverse_merge! :api_key => "abc1234", :format => "xml"
query_hash.reverse_merge!({:api_key => options["api_key"]}) if options[:api_key]
query = to_query_string(query_hash)
full_path = "http://localhost:3000/#{path}.#{options[:format]}?#{query}"
response = case verb
when :get
Curl::Easy.perform(full_path)
when :post
Curl::Easy.http_post("http://localhost:3000/#{path}.#{options[:format]}", query)
when :put
Curl::Easy.http_put(full_path, nil)
when :delete
Curl::Easy.http_delete(full_path)
end
case options[:format]
when "xml"
Hash.from_xml(response.body_str)
when "json"
JSON.parse(response.body_str)
end
end
private
def to_query_string(val)
uri = Addressable::URI.new
uri.query_values = val
uri.query
end
end
e qui ci sono alcuni semplici esempi: attributi risorsa Richiesta con GET:
api_call("calls/41", :get)
Creazione di risorse con POST:
api_call("people", :post, {:person => {:first => "Robert", :last => "Smith" } })
risorse Aggiornamento con PUT:
api_call("people/21", :put, {:person => { :first => "Bob" } })
Eliminazione di risorse con DELETE:
api_call("calls/41", :delete)
Disattivazione inserimento automatico di api_key:
api_call("calls/41", :get, {}, {:api_key => false})
Utilizzare l'api_key sbagliato:
api_call("calls/41", :get, {}, {:api_key => "wrong"})
Usa come JSON (di default è xml):
api_call("calls/41", :get, {}, {:format => "json"})
perché non trasformarlo in un gioiello che i binari possono sfruttare durante i test? – masukomi
Dovresti sicuramente renderlo un gioiello. Buon lavoro –
- 1. Il modo migliore per richiamare le API Rest da angularjs?
- 2. Rest Server o API per testare il mio client Restful?
- 3. Il modo migliore per progettare un'API REST con più filtri?
- 4. Qual è il modo migliore per testare un'app per rails?
- 5. Come testare le API
- 6. Il modo migliore per testare i valori booleani in Rspec
- 7. Qual è il modo migliore per testare javascript?
- 8. Il modo migliore per testare i repository che usano DbContext
- 9. Qual è il modo migliore per testare una RedirectToAction?
- 10. Come testare l'unità API?
- 11. Il modo migliore per implementare le relazioni di collegamento per HATEOAS in XML?
- 12. Esiste un pacchetto Java per testare le API RESTful?
- 13. API REST per rabbitmq
- 14. Il modo migliore per denominare le tabelle
- 15. Il modo migliore per ottenere Meteo corrente tramite API?
- 16. derbyjs per API REST
- 17. Un modo per usare PHPUnit per testare le richieste e le risposte API usando solo PHP?
- 18. Il modo migliore per leggere, modificare e scrivere XML
- 19. Il modo migliore per manipolare XML in .NET
- 20. Objective-C: il modo migliore per accedere all'API REST sul tuo iPhone
- 21. Qual è il modo migliore per implementare un'API REST di registrazione per iPhone/Android?
- 22. Come un server REST fittizio per testare le richieste HTTP?
- 23. API REST test unità
- 24. Un'alternativa migliore a Jersey/Jackson per la creazione di API JSON REST?
- 25. Un modo corretto per testare le gemme
- 26. modo migliore per testare se un tipo è una raccolta
- 27. Il modo migliore per archiviare le immagini in iOS
- 28. Il modo migliore per gestire la versione dell'URI dell'API REST JAX-RS
- 29. qual è il modo corretto per testare le prestazioni NFS
- 30. Clojure API REST Frameworks
Vuoi dire come puoi fare richieste di test all'URL usando qualche tipo di strumento? O stai parlando di creare un test unitario automatico di qualche tipo? – laz