我有一个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的密钥的客户标题?
答案 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