@@ -12,6 +12,9 @@ defmodule Tesla.Middleware.JSON do
1212 mix deps.compile tesla
1313 ```
1414
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+
1518 ## Examples
1619
1720 ```
@@ -61,6 +64,7 @@ defmodule Tesla.Middleware.JSON do
6164
6265 It is used by `Tesla.Middleware.EncodeJson`.
6366 """
67+ @ spec encode ( Tesla.Env . t ( ) , keyword ( ) ) :: Tesla.Env . result ( )
6468 def encode ( env , opts ) do
6569 with true <- encodable? ( env ) ,
6670 { :ok , body } <- encode_body ( env . body , opts ) do
@@ -98,6 +102,7 @@ defmodule Tesla.Middleware.JSON do
98102
99103 It is used by `Tesla.Middleware.DecodeJson`.
100104 """
105+ @ spec decode ( Tesla.Env . t ( ) , keyword ( ) ) :: Tesla.Env . result ( )
101106 def decode ( env , opts ) do
102107 with true <- decodable? ( env , opts ) ,
103108 { :ok , body } <- decode_body ( env . body , opts ) do
@@ -151,7 +156,15 @@ defmodule Tesla.Middleware.JSON do
151156end
152157
153158defmodule 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
155168 def call ( env , next , opts ) do
156169 opts = opts || [ ]
157170
@@ -162,7 +175,12 @@ defmodule Tesla.Middleware.DecodeJson do
162175end
163176
164177defmodule 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
166184 def call ( env , next , opts ) do
167185 opts = opts || [ ]
168186
0 commit comments