Airborne的多部分POST,失败的"缺少开始边界"

时间:2016-09-12 14:50:04

标签: ruby rspec rest-client airborne

现在已经使用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进行这些测试),但是希望为团队的其他成员保持简单。

2 个答案:

答案 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)