The type of request definitions¶
All request definitions have type RequestT[U, T, S] (RequestT as in Request Template). If this looks a bit complex, don’t worry, what the three type parameters stand for is the only thing you’ll hopefully have to remember when using the API!
Going one-by-one:
U[_]specifies if the request method and URL are specified. Using the API, this can be eithertype Empty[X] = None, meaning that the request has neither a method nor an URI. Or, it can betype Id[X] = X(type-level identity), meaning that the request has both a method and an URI specified. Only requests with a specified URI & method can be sent.Tspecifies the type to which the response will be read. By default, this isEither[String, String]. But it can also be e.g.Array[Byte]orUnit, if the response should be ignored. Response body handling can be changed by calling the.responsemethod. With backends which support streaming, this can also be a supported stream type. See response body specifications for more details.Sspecifies the stream type that this request uses. Most of the time this will beNothing, meaning that this request does not send a streaming body or receive a streaming response. So most of the time you can just ignore that parameter. But, if you are using a streaming backend and want to send/receive a stream, the.streamBodyorresponse(asStream[S])will change the type parameter.
There are two type aliases for the request template that are used:
type Request[T, S] = RequestT[Id, T, S]. A sendable request.type PartialRequest[T, S] = RequestT[Empty, T, S]
As basicRequest, the starting request, by default reads the body into a Either[String, String], its type is:
basicRequest: PartialRequest[Either[String, String], Nothing]