4.0.0
A lot has happened since 3.0.0! The API is smaller, and more focused and I'm
excited about that. In particular, BodyReader
and its friends have been
removed. Since this is the official upgrade for Elm 0.18, the new
elm-lang/http
package has a lot of influence. The new Http
package includes
a much more cohesive experience for declaring expectations of response bodies.
See the Http.Expect
type in elm-lang/http
.
This feature is even reminiscent of BodyReader
!
Since we have this as a part of the platform now, all of the BodyReader
-
related features are gone. For these you'll just "use the platform", as they
say, and make use of withExpect
in your builder pipelines. In the future
we may include fancier, custom Expect
formulations for your convenience.
Secondly, you'll now have the option to convert a RequestBuilder a
into an
Http.Request a
or send it directly using HttpBuilder.send
, which has the
same signature as Http.send
. This helps to keep your builder pipelines clean
while also leaving you the option to get out an Http.Request
if you need.
Long story short, HttpBuilder
is just about building requests, just like
when it started out. The platform covers the rest.
Here's the list of all changes:
Removals
url
: usewithQueryParams
instead to add query params to your urlwithBody
: use one of the more specificwith*Body
functions insteadwithMultipartBody
: string multipart bodies are the only type supported by
elm-lang/http
currently, sojust usewithMultipartStringBody
insteadwithMimeType
: the first parameter towithStringBody
will set your MIME
type automatically. Alternatively, set a header withwithHeader
withCacheBuster
: since we're giving up control of the send process, we can't
chain on aTask
to get the current timewithZeroStatusAllowed
: we don't control the send process. You can handle
this yourself under theHttp.BadStatus
error when you deal with errors in
your send msg tagger.BodyReader
: see introstringReader
: see introjsonReader
: see introunitReader
: see introError
: since we don't control the send process we don't need thisResponse
: same asError
toSettings
:Http.Settings
doesn't exist anymore, it was moved under
Http.Request
Request
: since we expect you'll need to importHttp
now anyway, you can
just import this fromHttp
Settings
: seetoSettings
Breaking Changes
RequestBuilder
->RequestBuilder a
, where the type parameter is the
expected type of the returned payload.get
,post
, etc. returnRequestBuilder ()
. The default is to make no
attempt to decode anything, so it is()
. You can usewithExpect
to attach
anHttp.Expect MyType
, which will turn it into aRequestBuilder MyType
.toRequest
returns anHttp.Request a
send
wrapsHttp.send
, read up on it to see how it works.
Additions
withExpect
: attach anHttp.Expect
to the requestwithQueryParams
: decorate the URL with query params
A sincere thank you to @evancz, @rtfeldman, @Bogdanp, and @knewter for time and
discussions that helped me make the decisions that led to these changes!
And a shoutout to @prikhi for taking the time to update the existing API for
0.18 and publishing it as priki/elm-http-builder.