2016-09-12 1 views
1

現在はrest-clientを使用していましたが、Airborneには新しくなりました。私がヒットしたのは、Airborneとのファイルアップロードのために複数の部分の投稿を得ることができないということです。Airborneを使用した複数パートPOST、「開始境界がありません」で失敗する

before :all do 
    fyle = File.new("e:/some-file.jpg", 'rb') 
    body = {:profile => "KonflictME", :file => fyle, :multipart => true} 
    post "/uploads", body, { :content_type => 'multipart/form-data' } 
    end 

残りのクライアントを使用して私の作業例は次のようになります:

fyle = File.new("e:/some-file.jpg, 'rb') 
resp = RestClient.post base_path_api << "uploads", 
    {:profile => "KonflictME", :file => fyle, :multipart => true}, 
    {:authorization => "myTokenString} 

ないとの違いをたくさん私は私の空挺POSTは次のようになります「境界開始行方不明」悪い要求に羽目になる残りのクライアントはAirborneのボンネットの下で使用されているので、2人はそうしてはいけません。 airborneの場合、base_urlとヘッダーはconfig(spec_helper.rb)に設定されています。

他の誰かがAirborneと複数の投稿をしましたか?アップロードは私のテストスイートのほんの一部であり、Air-Air以外のソリューション(これらのテストにはレストクライアントを直接使用しています)を持っていますが、残りのチームにとっては簡単なものにしたいと考えています。

答えて

0

空中枠組みはrestclientに基づいて、ソースコード内のlib /空中/ rest_client_requester.rbでラインがあるさ:あなたが定義したすべてのボディを意味

request_body = request_body.to_json if options[:body].is_a?(Hash)

JSONに転送されます、およびフォローラインのパラメータとして:

RestClient.send(method, get_url(url), request_body, headers)

しかしrestclientに、あなたはJSONを投稿したり、ファイルをアップロードするかどうかを体のパターンを考慮する必要はありません。あなたが定義されたボディは、ファイルが含まれているかどうかを確認するために

request_body = request_body.to_json if options[:body].is_a?(Hash) && options[:body].to_json["file"].nil?

:あなたは、ファイルをアップロードしたい場合は、に上記のコードを変更することができます。私は最近のプロジェクトでこの変更を加えました。

希望すると、これが役立ちます。

0

RestClient(空気中の依存関係)を使用すると、これを簡単に行うことができます。あなたのパラメータをハッシュで普通の形で書く:

​​3210
関連する問題