mirror of
https://github.com/rest-client/rest-client.git
synced 2022-11-09 13:49:40 -05:00
Add some README notes on upgrading to 2.0.
This commit is contained in:
parent
0d8f777fec
commit
51032140c9
2 changed files with 63 additions and 2 deletions
61
README.md
61
README.md
|
@ -45,6 +45,35 @@ There are also several development dependencies. It's recommended to use
|
||||||
[bundler](http://bundler.io/) to manage these dependencies for hacking on
|
[bundler](http://bundler.io/) to manage these dependencies for hacking on
|
||||||
rest-client.
|
rest-client.
|
||||||
|
|
||||||
|
### Upgrading to rest-client 2.0 from 1.x
|
||||||
|
|
||||||
|
Users are encouraged to upgrade to rest-client 2.0, which cleans up a number of
|
||||||
|
API warts and wrinkles, making rest-client generally more useful. Usage is
|
||||||
|
largely compatible, so many applications will be able to upgrade with no
|
||||||
|
changes.
|
||||||
|
|
||||||
|
Overview of significant changes:
|
||||||
|
|
||||||
|
* requires Ruby >= 2.0
|
||||||
|
* `RestClient::Response` objects are a subclass of `String` rather than a
|
||||||
|
Frankenstein monster. And `#body` or `#to_s` return a true `String` object.
|
||||||
|
* cleanup of exception classes, including new `RestClient::Exceptions::Timeout`
|
||||||
|
* improvements to handling of redirects: responses and history are properly
|
||||||
|
exposed
|
||||||
|
* major changes to cookie support: cookie jars are used for browser-like
|
||||||
|
behavior throughout
|
||||||
|
* encoding: Content-Type charset response headers are used to automatically set
|
||||||
|
the encoding of the response string
|
||||||
|
* HTTP params: handling of GET/POST params is more consistent and sophisticated
|
||||||
|
for deeply nested hash objects, and `ParamsArray` can be used to pass ordered
|
||||||
|
params
|
||||||
|
* improved proxy support with per-request proxy configuration, plus the ability
|
||||||
|
to disable proxies set by environment variables
|
||||||
|
* default request headers: rest-client sets `Accept: */*` and
|
||||||
|
`User-Agent: rest-client/...`
|
||||||
|
|
||||||
|
See [history.md](./history.md) for a more complete description of changes.
|
||||||
|
|
||||||
## Usage: Raw URL
|
## Usage: Raw URL
|
||||||
```ruby
|
```ruby
|
||||||
require 'rest-client'
|
require 'rest-client'
|
||||||
|
@ -177,10 +206,38 @@ end
|
||||||
➔ 404 Resource Not Found | text/html 282 bytes
|
➔ 404 Resource Not Found | text/html 282 bytes
|
||||||
```
|
```
|
||||||
|
|
||||||
### Manually following redirection
|
### Redirection
|
||||||
|
|
||||||
|
By default, rest-client will follow HTTP 30x redirection requests.
|
||||||
|
|
||||||
|
__New in 2.0:__ `RestClient::Response` exposes a `#history` method that returns
|
||||||
|
a list of each response received in a redirection chain.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
>> r = RestClient.get('http://httpbin.org/redirect/2')
|
||||||
|
=> <RestClient::Response 200 "{\n \"args\":...">
|
||||||
|
|
||||||
|
# see each response in the redirect chain
|
||||||
|
>> r.history
|
||||||
|
=> [<RestClient::Response 302 "<!DOCTYPE H...">, <RestClient::Response 302 "">]
|
||||||
|
|
||||||
|
# see each requested URL
|
||||||
|
>> r.request.url
|
||||||
|
=> "http://httpbin.org/get"
|
||||||
|
>> r.history.map {|x| x.request.url}
|
||||||
|
=> ["http://httpbin.org/redirect/2", "http://httpbin.org/relative-redirect/1"]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Manually following redirection
|
||||||
|
|
||||||
To disable automatic redirection, set `:max_redirects => 0`.
|
To disable automatic redirection, set `:max_redirects => 0`.
|
||||||
|
|
||||||
|
__New in 2.0:__ Prior versions of rest-client would raise
|
||||||
|
`RestClient::MaxRedirectsReached`, with no easy way to access the server's
|
||||||
|
response. In 2.0, rest-client raises the normal
|
||||||
|
`RestClient::ExceptionWithResponse` as it would with any other non-HTTP-20x
|
||||||
|
response.
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
>> RestClient::Request.execute(method: :get, url: 'http://httpbin.org/redirect/1')
|
>> RestClient::Request.execute(method: :get, url: 'http://httpbin.org/redirect/1')
|
||||||
=> RestClient::Response 200 "{\n "args":..."
|
=> RestClient::Response 200 "{\n "args":..."
|
||||||
|
@ -226,7 +283,7 @@ Response objects have several useful methods. (See the class rdoc for more detai
|
||||||
- `Response#cookies`: A hash of HTTP cookies set by the server
|
- `Response#cookies`: A hash of HTTP cookies set by the server
|
||||||
- `Response#cookie_jar`: <em>New in 1.8</em> An HTTP::CookieJar of cookies
|
- `Response#cookie_jar`: <em>New in 1.8</em> An HTTP::CookieJar of cookies
|
||||||
- `Response#request`: The RestClient::Request object used to make the request
|
- `Response#request`: The RestClient::Request object used to make the request
|
||||||
- `Response#history`: If redirection was followed, a list of prior Response objects
|
- `Response#history`: <em>New in 2.0</em> If redirection was followed, a list of prior Response objects
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
RestClient.get('http://example.com')
|
RestClient.get('http://example.com')
|
||||||
|
|
|
@ -59,6 +59,10 @@ module RestClient
|
||||||
#
|
#
|
||||||
# This list will be used by default if the Ruby global OpenSSL default
|
# This list will be used by default if the Ruby global OpenSSL default
|
||||||
# ciphers appear to be a weak list.
|
# ciphers appear to be a weak list.
|
||||||
|
#
|
||||||
|
# TODO: either remove this code or always use it, since Ruby uses a decent
|
||||||
|
# cipher list in versions >= 2.0.
|
||||||
|
#
|
||||||
DefaultCiphers = %w{
|
DefaultCiphers = %w{
|
||||||
!aNULL
|
!aNULL
|
||||||
!eNULL
|
!eNULL
|
||||||
|
|
Loading…
Reference in a new issue