现在已经使用rest-client一段时间了,但是空降新手。我遇到的障碍是,我似乎无法获得多篇文章上传与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
我使用rest-client的工作示例如下所示:
fyle = File.new("e:/some-file.jpg, 'rb')
resp = RestClient.post base_path_api << "uploads",
{:profile => "KonflictME", :file => fyle, :multipart => true},
{:authorization => "myTokenString}
两者之间并没有太大的区别,因为在Airborne的引擎盖下使用rest-client是不可能的。 对于Airborne,base_url和header在config(spec_helper.rb)中设置。
有没有其他人尝试过Airborne的多部分帖子?上传只是我测试套件的一小部分,我有一个非机载解决方案(只是直接使用rest-client进行这些测试),但是希望为团队的其他成员保持简单。
答案 0 :(得分:0)
机载框架基于restclient,在源代码中有一行lib / airborne / 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?
检查您定义的主体是否包含文件。我在最近的项目中做了这个改变。
希望这会对你有所帮助。
答案 1 :(得分:0)
你可以使用RestClient(空中依赖)来使这相当容易。用哈希法正常写出你的参数:
=SUMIF($A$1:$C$4,G2,$B$1:$D$4)