From 79da5802835bb1ebfa87994da6093cce4f893dab Mon Sep 17 00:00:00 2001 From: iMacTia Date: Sat, 8 Jun 2019 17:05:44 +0100 Subject: [PATCH] Improves middleware documentation adding a diagram. --- docs/assets/img/middleware.png | Bin 0 -> 81436 bytes docs/middleware/custom.md | 4 +- docs/middleware/env.md | 8 ---- docs/middleware/index.md | 44 +++--------------- docs/middleware/list.md | 50 +++++++++++++++++++++ docs/middleware/request/authentication.md | 2 +- docs/middleware/request/instrumentation.md | 2 +- docs/middleware/request/multipart.md | 2 +- docs/middleware/request/retry.md | 2 +- docs/middleware/request/url_encoded.md | 2 +- docs/middleware/response/logger.md | 2 +- docs/middleware/response/raise_error.md | 2 +- 12 files changed, 65 insertions(+), 55 deletions(-) create mode 100644 docs/assets/img/middleware.png delete mode 100644 docs/middleware/env.md create mode 100644 docs/middleware/list.md diff --git a/docs/assets/img/middleware.png b/docs/assets/img/middleware.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1f2dfc6733d05c8893941bdcbb7d69dfb8c400 GIT binary patch literal 81436 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 P{3t$FdsHN267YWjLI~D3 literal 0 HcmV?d00001 diff --git a/docs/middleware/custom.md b/docs/middleware/custom.md index e1ada709..ac6727aa 100644 --- a/docs/middleware/custom.md +++ b/docs/middleware/custom.md @@ -1,8 +1,10 @@ --- -layout: page +layout: documentation title: "Writing Middleware" permalink: /middleware/custom hide: true +prev_name: Available Middleware +prev_link: ./list --- ## Writing middleware diff --git a/docs/middleware/env.md b/docs/middleware/env.md deleted file mode 100644 index da0b2c41..00000000 --- a/docs/middleware/env.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: page -title: "Faraday Env" -permalink: /middleware/env -hide: true ---- - -Faraday loves the environment. diff --git a/docs/middleware/index.md b/docs/middleware/index.md index db8faf29..4504f0ef 100644 --- a/docs/middleware/index.md +++ b/docs/middleware/index.md @@ -1,8 +1,10 @@ --- -layout: page -title: "Middleware Usage" +layout: documentation +title: "Middleware Introduction" permalink: /middleware hide: true +next_name: Available Middleware +next_link: ./list --- 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 run, Faraday will return a `Faraday::Response` to the end user. -## Advanced middleware usage +![Middleware](../assets/img/middleware.png) 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 @@ -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": 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 \ No newline at end of file diff --git a/docs/middleware/list.md b/docs/middleware/list.md new file mode 100644 index 00000000..2f22a662 --- /dev/null +++ b/docs/middleware/list.md @@ -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 diff --git a/docs/middleware/request/authentication.md b/docs/middleware/request/authentication.md index bb1de2f6..00771c71 100644 --- a/docs/middleware/request/authentication.md +++ b/docs/middleware/request/authentication.md @@ -6,7 +6,7 @@ hide: true next_name: Multipart Middleware next_link: ./multipart top_name: Back to Middleware -top_link: ./ +top_link: ./list --- Basic and Token authentication are handled by Faraday::Request::BasicAuthentication diff --git a/docs/middleware/request/instrumentation.md b/docs/middleware/request/instrumentation.md index 84553346..33fcaae0 100644 --- a/docs/middleware/request/instrumentation.md +++ b/docs/middleware/request/instrumentation.md @@ -8,7 +8,7 @@ prev_link: ./retry next_name: Logger Middleware next_link: ./logger top_name: Back to Middleware -top_link: ./ +top_link: ./list --- The `Instrumentation` middleware allows to instrument requests using different tools. diff --git a/docs/middleware/request/multipart.md b/docs/middleware/request/multipart.md index 7c48f41b..22724672 100644 --- a/docs/middleware/request/multipart.md +++ b/docs/middleware/request/multipart.md @@ -8,7 +8,7 @@ prev_link: ./authentication next_name: UrlEncoded Middleware next_link: ./url-encoded 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. diff --git a/docs/middleware/request/retry.md b/docs/middleware/request/retry.md index 6abd4e3e..4d5396fa 100644 --- a/docs/middleware/request/retry.md +++ b/docs/middleware/request/retry.md @@ -8,7 +8,7 @@ prev_link: ./url-encoded next_name: Instrumentation Middleware next_link: ./instrumentation top_name: Back to Middleware -top_link: ./ +top_link: ./list --- The `Retry` middleware automatically retries requests that fail due to intermittent client diff --git a/docs/middleware/request/url_encoded.md b/docs/middleware/request/url_encoded.md index fc43673b..bcbb71e6 100644 --- a/docs/middleware/request/url_encoded.md +++ b/docs/middleware/request/url_encoded.md @@ -8,7 +8,7 @@ prev_link: ./multipart next_name: Retry Middleware next_link: ./retry 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. diff --git a/docs/middleware/response/logger.md b/docs/middleware/response/logger.md index 365ca270..1468dbf2 100644 --- a/docs/middleware/response/logger.md +++ b/docs/middleware/response/logger.md @@ -8,7 +8,7 @@ prev_link: ./instrumentation next_name: RaiseError Middleware next_link: ./raise-error top_name: Back to Middleware -top_link: ./ +top_link: ./list --- The `Logger` middleware logs both the request and the response body and headers. diff --git a/docs/middleware/response/raise_error.md b/docs/middleware/response/raise_error.md index 4b60524a..8a46f371 100644 --- a/docs/middleware/response/raise_error.md +++ b/docs/middleware/response/raise_error.md @@ -6,7 +6,7 @@ hide: true prev_name: Logger Middleware prev_link: ./logger 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.