私はXML要求を送信するために私にできるように、このスタンドアロンスクリプトを持っていましたが、サーバーを必要とする:
require 'rubygems'
require 'net/http'
require 'json'
url = URI.parse('http://localhost:3030/myresource.xml')
request = Net::HTTP::Post.new(url.path)
request.content_type="text/xml"
request.basic_auth('user', 'secret')
request.body = "<?xml version='1.0' encoding='UTF-8'?><somedata><name>Test Name 1</name><description>Some data for testing</description></somedata>"
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
puts response
は最終的に私はでこれを置く2. RSpecのを使用して、サーバーを起動せずにこれを行うことができましたスペックファイルspec/requests
の下で私は私のアプリでそれをwebratやcapybaraなしで行うことができます。今、私は私が私のドキュメントのXMLやJSONファイル(いくつかのhttp://リソース)などのリモートリソースからsome_xml_string
を構築することができますねXML
post("/myresource.xml",
some_xml_string,
{"CONTENT_TYPE" => "text/xml",
"HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})
とJSON
post("/myresource.json",
some_json_string,
{"CONTENT_TYPE" => "application/json",
"HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})
ため
例えば、。はい、それはもっと維持して、テストは壊れやすいでしょう。私はこれについてもっと考えなければならないでしょう...外部の人々によって使用されるAPIを変更することは、軽く取られるべきものではなく、常に多くのトレードオフです。より良い示唆は歓迎です!
出典
2010-11-23 16:14:35
oma
「このドキュメントのAPI例を生成するにはどうすればよいですか」 – oma
私は 'some_hash.to_xml'と' some_hash.to_json'を使うべきだと思います。私はすでにコントローラーにハッシュを送るテストをたくさんしていますので、私はそれに行くことができると思います..どのようにあなたのAPIを他人に文書化していますか? – oma