Я создал собственный плагин для установки заголовков запросов в ktor
internal fun headersPlugin(defaultHeaders: DefaultHeaders) = createClientPlugin("headersPlugin") {
onRequest { request, _ ->
request.headers.apply {
append("requestFrom", defaultHeaders.requestFrom)
append("clientType", defaultHeaders.clientType)
append("User-Agent", defaultHeaders.userAgent)
append("AUTHTOKEN", defaultHeaders.authToken)
append("SESSIONID", defaultHeaders.sessionId)
}
}
}
Теперь я хочу удалить AUTH TOKEN для определенного запроса API в
fun getApiClient(): HttpClient = httpClient {
install(headersPlugin(DefaultHeaders()))
defaultRequest {
/* logic to remove AUTHTOKEN header by checking some annotation or something when a purticular API request is annotated or some variable to check */
}
/* Logging */
install(Logging) {
logger = object : Logger {
override fun log(message: String) {
Napier.v("HTTP Client", null, message)
}
}
level = LogLevel.ALL
}
}.also {
Napier.base(DebugAntilog())
}
Я уже использую модификацию и пытаюсь перейти на KTOR
при модернизации я аннотирую метод в классе обслуживания аннотацией @IGNORE и в перехватчике я проверяю аннотацию IGNORE и удаляю заголовок, если он присутствует
val tag: Invocation? = request.tag(Invocation::class.java)
val method: Method? = tag?.method()
builder
.addHeader("requestFrom", networkUtil.requestFrom)
.addHeader("clientType", "17")
.addHeader("User-Agent", networkUtil.userAgentInfo)
.addHeader("AUTHTOKEN", networkUtil.authKey)
.addHeader("SESSIONID", networkUtil.sessionId)
method?.also {
it.getAnnotation(Ignore::class.java)?.run {
if (this.keyName.contains(Ignore.AUTH_TOKEN)) {
builder.removeHeader("AUTHTOKEN")
}
if (!this.keyName.contains(Ignore.BASE_URL)) {
builder.url(reformedUrl)
}
if (this.keyName.contains(Ignore.SESSION_ID) || networkUtil.sessionId.isEmpty()) {
builder.removeHeader("SESSIONID")
}
} ?: run {
builder.url(reformedUrl)
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... st-in-ktor