mirror of
https://github.com/lostisland/faraday.git
synced 2025-12-06 00:01:23 -05:00
Improves middleware documentation adding a diagram.
This commit is contained in:
parent
681b6baa33
commit
79da580283
BIN
docs/assets/img/middleware.png
Normal file
BIN
docs/assets/img/middleware.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
@ -1,8 +1,10 @@
|
|||||||
---
|
---
|
||||||
layout: page
|
layout: documentation
|
||||||
title: "Writing Middleware"
|
title: "Writing Middleware"
|
||||||
permalink: /middleware/custom
|
permalink: /middleware/custom
|
||||||
hide: true
|
hide: true
|
||||||
|
prev_name: Available Middleware
|
||||||
|
prev_link: ./list
|
||||||
---
|
---
|
||||||
|
|
||||||
## Writing middleware
|
## Writing middleware
|
||||||
|
|||||||
@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
layout: page
|
|
||||||
title: "Faraday Env"
|
|
||||||
permalink: /middleware/env
|
|
||||||
hide: true
|
|
||||||
---
|
|
||||||
|
|
||||||
Faraday loves the environment.
|
|
||||||
@ -1,8 +1,10 @@
|
|||||||
---
|
---
|
||||||
layout: page
|
layout: documentation
|
||||||
title: "Middleware Usage"
|
title: "Middleware Introduction"
|
||||||
permalink: /middleware
|
permalink: /middleware
|
||||||
hide: true
|
hide: true
|
||||||
|
next_name: Available Middleware
|
||||||
|
next_link: ./list
|
||||||
---
|
---
|
||||||
|
|
||||||
A `Faraday::Connection` uses a `Faraday::RackBuilder` to assemble a
|
A `Faraday::Connection` uses a `Faraday::RackBuilder` to assemble a
|
||||||
@ -10,7 +12,7 @@ Rack-inspired middleware stack for making HTTP requests. Each middleware runs
|
|||||||
and passes an Env object around to the next one. After the final middleware has
|
and passes an Env object around to the next one. After the final middleware has
|
||||||
run, Faraday will return a `Faraday::Response` to the end user.
|
run, Faraday will return a `Faraday::Response` to the end user.
|
||||||
|
|
||||||
## Advanced middleware usage
|

|
||||||
|
|
||||||
The order in which middleware is stacked is important. Like with Rack, the
|
The order in which middleware is stacked is important. Like with Rack, the
|
||||||
first middleware on the list wraps all others, while the last middleware is the
|
first middleware on the list wraps all others, while the last middleware is the
|
||||||
@ -47,39 +49,3 @@ payload[:profile_pic] = Faraday::UploadIO.new('/path/to/avatar.jpg', 'image/jpeg
|
|||||||
# "Multipart" middleware detects files and encodes with "multipart/form-data":
|
# "Multipart" middleware detects files and encodes with "multipart/form-data":
|
||||||
conn.put '/profile', payload
|
conn.put '/profile', payload
|
||||||
```
|
```
|
||||||
|
|
||||||
## Middleware Types
|
|
||||||
|
|
||||||
### Request
|
|
||||||
|
|
||||||
**Request middleware** can modify Request details before the Adapter runs. Most
|
|
||||||
middleware set Header values or transform the request body based on the
|
|
||||||
content type.
|
|
||||||
|
|
||||||
* [`BasicAuthentication`][authentication] sets the `Authorization` header to the `user:password`
|
|
||||||
base64 representation.
|
|
||||||
* [`TokenAuthentication`][authentication] sets the `Authorization` header to the specified token.
|
|
||||||
* [`Multipart`][multipart] converts a `Faraday::Request#body` hash of key/value pairs into a
|
|
||||||
multipart form request.
|
|
||||||
* [`UrlEncoded`][url_encoded] converts a `Faraday::Request#body` hash of key/value pairs into a url-encoded request body.
|
|
||||||
* [`Retry`][retry] automatically retries requests that fail due to intermittent client
|
|
||||||
or server errors (such as network hiccups).
|
|
||||||
* [`Instrumentation`][instrumentation] allows to instrument requests using different tools.
|
|
||||||
|
|
||||||
|
|
||||||
### Response
|
|
||||||
|
|
||||||
**Response middleware** receives the response from the adapter and can modify its details
|
|
||||||
before returning it.
|
|
||||||
|
|
||||||
* [`Logger`][logger] logs both the request and the response body and headers.
|
|
||||||
* [`RaiseError`][raise_error] checks the response HTTP code and raises an exception if it is a 4xx or 5xx code.
|
|
||||||
|
|
||||||
|
|
||||||
[authentication]: ./authentication
|
|
||||||
[multipart]: ./multipart
|
|
||||||
[url_encoded]: ./url-encoded
|
|
||||||
[retry]: ./retry
|
|
||||||
[instrumentation]: ./instrumentation
|
|
||||||
[logger]: ./logger
|
|
||||||
[raise_error]: ./raise-error
|
|
||||||
50
docs/middleware/list.md
Normal file
50
docs/middleware/list.md
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
layout: documentation
|
||||||
|
title: "Available Middleware"
|
||||||
|
permalink: /middleware/list
|
||||||
|
hide: true
|
||||||
|
prev_name: Middleware Introduction
|
||||||
|
prev_link: ./
|
||||||
|
next_name: Writing Middleware
|
||||||
|
next_link: ./custom
|
||||||
|
---
|
||||||
|
|
||||||
|
Faraday ships with some useful middleware that you can use to customize your request/response lifecycle.
|
||||||
|
Middleware are separated into two macro-categories: Request Middleware and Response Middleware.
|
||||||
|
The former usually deal with the request, encoding the parameters or setting headers.
|
||||||
|
The latter instead activate after the request is completed and a response has been received, like
|
||||||
|
parsing the response body, logging useful info or checking the response status.
|
||||||
|
|
||||||
|
### Request Middleware
|
||||||
|
|
||||||
|
**Request middleware** can modify Request details before the Adapter runs. Most
|
||||||
|
middleware set Header values or transform the request body based on the
|
||||||
|
content type.
|
||||||
|
|
||||||
|
* [`BasicAuthentication`][authentication] sets the `Authorization` header to the `user:password`
|
||||||
|
base64 representation.
|
||||||
|
* [`TokenAuthentication`][authentication] sets the `Authorization` header to the specified token.
|
||||||
|
* [`Multipart`][multipart] converts a `Faraday::Request#body` hash of key/value pairs into a
|
||||||
|
multipart form request.
|
||||||
|
* [`UrlEncoded`][url_encoded] converts a `Faraday::Request#body` hash of key/value pairs into a url-encoded request body.
|
||||||
|
* [`Retry`][retry] automatically retries requests that fail due to intermittent client
|
||||||
|
or server errors (such as network hiccups).
|
||||||
|
* [`Instrumentation`][instrumentation] allows to instrument requests using different tools.
|
||||||
|
|
||||||
|
|
||||||
|
### Response Middleware
|
||||||
|
|
||||||
|
**Response middleware** receives the response from the adapter and can modify its details
|
||||||
|
before returning it.
|
||||||
|
|
||||||
|
* [`Logger`][logger] logs both the request and the response body and headers.
|
||||||
|
* [`RaiseError`][raise_error] checks the response HTTP code and raises an exception if it is a 4xx or 5xx code.
|
||||||
|
|
||||||
|
|
||||||
|
[authentication]: ./authentication
|
||||||
|
[multipart]: ./multipart
|
||||||
|
[url_encoded]: ./url-encoded
|
||||||
|
[retry]: ./retry
|
||||||
|
[instrumentation]: ./instrumentation
|
||||||
|
[logger]: ./logger
|
||||||
|
[raise_error]: ./raise-error
|
||||||
@ -6,7 +6,7 @@ hide: true
|
|||||||
next_name: Multipart Middleware
|
next_name: Multipart Middleware
|
||||||
next_link: ./multipart
|
next_link: ./multipart
|
||||||
top_name: Back to Middleware
|
top_name: Back to Middleware
|
||||||
top_link: ./
|
top_link: ./list
|
||||||
---
|
---
|
||||||
|
|
||||||
Basic and Token authentication are handled by Faraday::Request::BasicAuthentication
|
Basic and Token authentication are handled by Faraday::Request::BasicAuthentication
|
||||||
|
|||||||
@ -8,7 +8,7 @@ prev_link: ./retry
|
|||||||
next_name: Logger Middleware
|
next_name: Logger Middleware
|
||||||
next_link: ./logger
|
next_link: ./logger
|
||||||
top_name: Back to Middleware
|
top_name: Back to Middleware
|
||||||
top_link: ./
|
top_link: ./list
|
||||||
---
|
---
|
||||||
|
|
||||||
The `Instrumentation` middleware allows to instrument requests using different tools.
|
The `Instrumentation` middleware allows to instrument requests using different tools.
|
||||||
|
|||||||
@ -8,7 +8,7 @@ prev_link: ./authentication
|
|||||||
next_name: UrlEncoded Middleware
|
next_name: UrlEncoded Middleware
|
||||||
next_link: ./url-encoded
|
next_link: ./url-encoded
|
||||||
top_name: Back to Middleware
|
top_name: Back to Middleware
|
||||||
top_link: ./
|
top_link: ./list
|
||||||
---
|
---
|
||||||
|
|
||||||
The `Multipart` middleware converts a `Faraday::Request#body` hash of key/value pairs into a multipart form request.
|
The `Multipart` middleware converts a `Faraday::Request#body` hash of key/value pairs into a multipart form request.
|
||||||
|
|||||||
@ -8,7 +8,7 @@ prev_link: ./url-encoded
|
|||||||
next_name: Instrumentation Middleware
|
next_name: Instrumentation Middleware
|
||||||
next_link: ./instrumentation
|
next_link: ./instrumentation
|
||||||
top_name: Back to Middleware
|
top_name: Back to Middleware
|
||||||
top_link: ./
|
top_link: ./list
|
||||||
---
|
---
|
||||||
|
|
||||||
The `Retry` middleware automatically retries requests that fail due to intermittent client
|
The `Retry` middleware automatically retries requests that fail due to intermittent client
|
||||||
|
|||||||
@ -8,7 +8,7 @@ prev_link: ./multipart
|
|||||||
next_name: Retry Middleware
|
next_name: Retry Middleware
|
||||||
next_link: ./retry
|
next_link: ./retry
|
||||||
top_name: Back to Middleware
|
top_name: Back to Middleware
|
||||||
top_link: ./
|
top_link: ./list
|
||||||
---
|
---
|
||||||
|
|
||||||
The `UrlEncoded` middleware converts a `Faraday::Request#body` hash of key/value pairs into a url-encoded request body.
|
The `UrlEncoded` middleware converts a `Faraday::Request#body` hash of key/value pairs into a url-encoded request body.
|
||||||
|
|||||||
@ -8,7 +8,7 @@ prev_link: ./instrumentation
|
|||||||
next_name: RaiseError Middleware
|
next_name: RaiseError Middleware
|
||||||
next_link: ./raise-error
|
next_link: ./raise-error
|
||||||
top_name: Back to Middleware
|
top_name: Back to Middleware
|
||||||
top_link: ./
|
top_link: ./list
|
||||||
---
|
---
|
||||||
|
|
||||||
The `Logger` middleware logs both the request and the response body and headers.
|
The `Logger` middleware logs both the request and the response body and headers.
|
||||||
|
|||||||
@ -6,7 +6,7 @@ hide: true
|
|||||||
prev_name: Logger Middleware
|
prev_name: Logger Middleware
|
||||||
prev_link: ./logger
|
prev_link: ./logger
|
||||||
top_name: Back to Middleware
|
top_name: Back to Middleware
|
||||||
top_link: ./
|
top_link: ./list
|
||||||
---
|
---
|
||||||
|
|
||||||
The `RaiseError` middleware checks the response HTTP code and raises an exception if it is a 4xx or 5xx code.
|
The `RaiseError` middleware checks the response HTTP code and raises an exception if it is a 4xx or 5xx code.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user