RestClient::Request.execute 和 RestClient.post 有什么区别?
What is the difference between RestClient::Request.execute and RestClient.post?
我用 RestClient::Request.execute
发出了一个 post 请求,它有效,但有时它以 422
(无法处理的实体)结束。
后来我尝试了 RestClient.post
,它没有给我 422
并且一直工作得很好。
这两个调用有什么区别?
我知道 RestClient::Request
比 RestClient.post
有更多使用参数的可能性。我不明白为什么我用一种方法得到 422
而另一种方法却没有。
这里我用了json:
response = RestClient::Request.execute(
:method => :post,
:url => 'http://localhost:3000',
:timeout => 30,
:open_timeout => 2,
:payload => payload.to_json,
:headers => {
:content_type => :json,
:accept => :json
}
)
对比
response = RestClient.post('http://localhost:3000',
:param1 => 'abc',
:param2 => "def")
它们相同 - RestClient.post
是 execute
的语法糖,请参阅 restclient 的来源,restclient.rb:
def self.post(url, payload, headers={}, &block)
Request.execute(:method => :post,
:url => url,
:payload => payload,
:headers => headers, &block)
end
422 是由其他原因引起的
我用 RestClient::Request.execute
发出了一个 post 请求,它有效,但有时它以 422
(无法处理的实体)结束。
后来我尝试了 RestClient.post
,它没有给我 422
并且一直工作得很好。
这两个调用有什么区别?
我知道 RestClient::Request
比 RestClient.post
有更多使用参数的可能性。我不明白为什么我用一种方法得到 422
而另一种方法却没有。
这里我用了json:
response = RestClient::Request.execute(
:method => :post,
:url => 'http://localhost:3000',
:timeout => 30,
:open_timeout => 2,
:payload => payload.to_json,
:headers => {
:content_type => :json,
:accept => :json
}
)
对比
response = RestClient.post('http://localhost:3000',
:param1 => 'abc',
:param2 => "def")
它们相同 - RestClient.post
是 execute
的语法糖,请参阅 restclient 的来源,restclient.rb:
def self.post(url, payload, headers={}, &block)
Request.execute(:method => :post,
:url => url,
:payload => payload,
:headers => headers, &block)
end
422 是由其他原因引起的