From: shugo@... Date: 2016-05-26T05:42:01+00:00 Subject: [ruby-core:75727] [Ruby trunk Feature#12375] Net::HTTP.post Issue #12375 has been updated by Shugo Maeda. Shugo Maeda wrote: > > > * The first argument must be a URI object, but it might be better to accept a String. > > > > It should accept the hostname and the path parameters, like Net::HTTP.get. > > Ah, I forgot to consider consistency with Net::HTTP.get. After contemplation, I think Net::HTTP.post shouldn't accept the hostname, path, and port parameters. These parameters are useless because they can't support HTTPS, and adding optional parameters is confusing because Net::HTTP.post needs to accept the mandatory request body and the optional request header as its parameters. The hostname, path, and port parameters of Net::HTTP.get might also have to be deprecated, but it's a different issue. > I've attached a patch, but there are some considerations: My thoughts about these considerations are: > * Net::HTTP.post_form supports basic authentication by userinfo in URLs, but Net::HTTP.post doesn't, because it's deprecated by RFC3986. Is it OK? I think it's OK. > * The first argument must be a URI object, but it might be better to accept a String. A String object shouldn't be accepted as the first argument, because it's confusing with the Net::HTTP.get-like hostname argument. > * Should methods for other HTTP methods such as Net::HTTP.patch be added? Such methods are not necessary because they are less popular than POST. ---------------------------------------- Feature #12375: Net::HTTP.post https://bugs.ruby-lang.org/issues/12375#change-58855 * Author: Shugo Maeda * Status: Open * Priority: Normal * Assignee: Yui NARUSE ---------------------------------------- Net::HTTP.post_form is convenient, but it's dedicated to application/x-www-form-urlencoded. Why not provide Net::HTTP.post for other media types? ``` res = Net::HTTP.post(URI('http://www.example.com/api/search'), { "q" => "ruby", "max" => "50" }.to_json, "Content-Type" => "application/json") ``` I've attached a patch, but there are some considerations: * Net::HTTP.post_form supports basic authentication by userinfo in URLs, but Net::HTTP.post doesn't, because it's deprecated by RFC3986. Is it OK? * The first argument must be a URI object, but it might be better to accept a String. * Should methods for other HTTP methods such as Net::HTTP.patch be added? ---Files-------------------------------- net_http_s_post.diff (1.76 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: