While working on #1101 , I thought of a couple more possible improvements.
For one, I think it would be useful to make parse_req and execute_request[_sync] public. With that, it would be possible to inspect the GraphQLRequest before executing it (e.g. for logging). It's even questionable whether the convenience graphql[_sync] functions are even necessary then, as they just call these two other functions.
All functions taking a Request<Body> should also be able to take a Request<String>. The body is converted to a string internally anyway and users of the library might already have a Response<String>. This also helps with users inspecting the request beforehand, given that String is much easier to use than hyper::Body. However, extending the API like that is a bit harder than #1101 as we still want to support Body.
While working on #1101 , I thought of a couple more possible improvements.
For one, I think it would be useful to make
parse_req
andexecute_request[_sync]
public. With that, it would be possible to inspect theGraphQLRequest
before executing it (e.g. for logging). It's even questionable whether the conveniencegraphql[_sync]
functions are even necessary then, as they just call these two other functions.All functions taking a
Request<Body>
should also be able to take aRequest<String>
. The body is converted to a string internally anyway and users of the library might already have aResponse<String>
. This also helps with users inspecting the request beforehand, given thatString
is much easier to use thanhyper::Body
. However, extending the API like that is a bit harder than #1101 as we still want to supportBody
.