@@ -12,6 +12,9 @@ defmodule Tesla.Middleware.JSON do
12
12
mix deps.compile tesla
13
13
```
14
14
15
+ If you only need to encode the request body or decode the response body,
16
+ you can use `Tesla.Middleware.EncodeJson` or `Tesla.Middleware.DecodeJson` directly instead.
17
+
15
18
## Examples
16
19
17
20
```
@@ -61,6 +64,7 @@ defmodule Tesla.Middleware.JSON do
61
64
62
65
It is used by `Tesla.Middleware.EncodeJson`.
63
66
"""
67
+ @ spec encode ( Tesla.Env . t ( ) , keyword ( ) ) :: Tesla.Env . result ( )
64
68
def encode ( env , opts ) do
65
69
with true <- encodable? ( env ) ,
66
70
{ :ok , body } <- encode_body ( env . body , opts ) do
@@ -98,6 +102,7 @@ defmodule Tesla.Middleware.JSON do
98
102
99
103
It is used by `Tesla.Middleware.DecodeJson`.
100
104
"""
105
+ @ spec decode ( Tesla.Env . t ( ) , keyword ( ) ) :: Tesla.Env . result ( )
101
106
def decode ( env , opts ) do
102
107
with true <- decodable? ( env , opts ) ,
103
108
{ :ok , body } <- decode_body ( env . body , opts ) do
@@ -151,7 +156,15 @@ defmodule Tesla.Middleware.JSON do
151
156
end
152
157
153
158
defmodule Tesla.Middleware.DecodeJson do
154
- @ moduledoc false
159
+ @ moduledoc """
160
+ Decodes response body as JSON.
161
+
162
+ Only decodes the body if the `Content-Type` header suggests
163
+ that the body is JSON.
164
+ """
165
+ @ moduledoc since: "1.8.0"
166
+
167
+ @ impl Tesla.Middleware
155
168
def call ( env , next , opts ) do
156
169
opts = opts || [ ]
157
170
@@ -162,7 +175,12 @@ defmodule Tesla.Middleware.DecodeJson do
162
175
end
163
176
164
177
defmodule Tesla.Middleware.EncodeJson do
165
- @ moduledoc false
178
+ @ moduledoc """
179
+ Encodes request body as JSON.
180
+ """
181
+ @ moduledoc since: "1.8.0"
182
+
183
+ @ impl Tesla.Middleware
166
184
def call ( env , next , opts ) do
167
185
opts = opts || [ ]
168
186
0 commit comments