[ruby-core:75486] [Ruby trunk Feature#12375] Net::HTTP.post

From: shugo@...
Date: 2016-05-13 09:04:44 UTC
List: ruby-core #75486
Issue #12375 has been updated by Shugo Maeda.


Usaku NAKAMURA wrote:
> 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.

> Of course, to implement it is not so hard, so I believe you will do it before committing the patch :-)

It's easy to implement, but I meant that the following code:

```
res = Net::HTTP.post('http://www.example.com/api/search',
                     { "q" => "ruby", "max" => "50" }.to_json,
                     "Content-Type" => "application/json")
```

The Net::HTTP.get style, which is less useful because it can't support HTTPS, will be as follows:

```
res = Net::HTTP.post('www.example.com',
                     '/api/search',
                     { "q" => "ruby", "max" => "50" }.to_json,
                     "Content-Type" => "application/json")
```

It might be possible to support both styles by checking argument numbers and types,
but keyword arguments might be better....


----------------------------------------
Feature #12375: Net::HTTP.post
https://bugs.ruby-lang.org/issues/12375#change-58605

* 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: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next