如何创建以下划线开头的自定义标头

时间:2014-12-08 22:48:45

标签: ruby rest-client

我有一个RESTful API提供程序,它坚持使用POST调用,并将标题_method设置为DELETE作为其DELETE调用无法正常工作的解决方法。

这就是我认为语法应该是:

response = RestClient.post("path/to/url", "{}",
            {
                    :content_type => 'application/json; charset=UTF-8',
                    :accept => 'application/json; charset=UTF-8',
                    :'_method' => "DELETE"
            } )

然而,标题正在变形,如下所示,使用RESTCLIENT_LOG = stdout运行

RestClient.post "<snipped>", "{}", "-Method"=>"DELETE", "Accept"=>"application/json; charset=UTF-8", "Accept-Encoding"=>"gzip, deflate", "Content-Length"=>"2", "Content-Type"=>"application/json; charset=UTF-8" 

可以看出_method变成-Method。如何获得带有名为_method的密钥的客户标题?

2 个答案:

答案 0 :(得分:2)

在标题Hash中看起来像rest-client has special treatment for Symbol keys,例如转换为:content_type进入"Content-Type",非常方便。

您的问题的解决方案是改为使用String:

response = RestClient.post("path/to/url", "{}",
             :content_type => 'application/json; charset=UTF-8',
             :accept => 'application/json; charset=UTF-8',
             "_method" => "DELETE"
           )

答案 1 :(得分:2)

尝试使用字符串而不是符号:"_method" => "DELETE"。 RestClient将对任何符号键进行美化(并转换为字符串),但保持字符串键不变。 Source