๐ Request Customization
Supported customization types
You can customize the outgoing request using one of these supported parameters:
| Parameter type | Scope | Description |
|---|---|---|
HttpRequestBuilder.() -> Unit |
Lambda | Adds inline modifications before sending the request. |
HttpRequestBuilder |
Mutable object | Passes a preconfigured HttpRequestBuilder instance. |
HttpRequest |
Immutable reference | Uses an already built HttpRequest for advanced scenarios. |
HttpRequestData |
Immutable reference | Uses an already built HttpRequestData for advanced scenarios. |
Examples
Example โ Inline customization
@GET("/profile")
suspend fun getProfile(builder: HttpRequestBuilder.() -> Unit): UserProfile
Usage:
service.getProfile {
header("Authorization", "Bearer $token")
expectSuccess = false
}
Example โ Using a preconfigured builder
@GET("/profile")
suspend fun getProfile(builder: HttpRequestBuilder): UserProfile
Usage:
val builder = HttpRequestBuilder().apply {
header("X-Api-Version", "2")
parameter("mode", "compact")
}
service.getProfile(builder)
Example โ Using an HttpRequest directly
@GET("/profile")
suspend fun getProfile(request: HttpRequest): UserProfile
Usage:
I don't know sincerely, sorry, but is supported!
Example - Using an HttpRequestData
@GET("/profile")
suspend fun getProfile(request: HttpRequestData): UserProfile
Usage:
val customRequest: HttpRequestData = HttpRequestBuilder("https://api.example.com/profile").build()
service.getProfile(customRequest)
Summary
- Request customization is available through builder or request parameters.
- Focus remains on simplicity, extensibility, and clear debugging aligned with Ktor Clientโs design.