#java #kotlin #retrofit2
#java #kotlin #retrofit2
Вопрос:
Предположим, у меня есть какой-то api:
interface SomeApi {
@GET("api/some")
suspend fun getSome(): List<SomeDto>
}
И его пользовательская реализация:
class SomeApiImpl : SomeApi {
override suspend fun getSome(): List<SomeDto> {
// do stuff
}
}
Можно ли настроить retrofit таким образом, чтобы вместо создания прокси-реализации SomeApi он использовал SomeApiImpl?
Спасибо!
Комментарии:
1. Насколько мне известно, это означало бы написание CallAdapter , но я не могу быть уверен, что это действительно то, что вы хотите. Могу я спросить, почему вы хотите это сделать? может быть, есть другой способ достичь вашей цели. Если это из-за сопрограмм, retrofit уже поддерживает их, используя это , например
2. Ну, иногда я хочу выполнить http-вызов, а иногда нет. Случай, который у меня есть: есть какой-то сервис, и я хочу предоставить его api через модернизацию (интерфейсы, подобные SomeApi в вопросе выше). В этом случае клиенты должны будут выполнить http-вызов для получения данных. Также я хотел бы использовать этот API в самом сервисе. В этом случае я бы хотел избежать сетевых вызовов.
3. Мне кажется, что у вас есть аргументы в пользу шаблона репозитория ? У вас может быть репозиторий, который получает реализацию сервиса, который не выполняет http-вызовы, и созданный модифицированный экземпляр api, который будет выполнять вызовы. Просто предложение.
4. Пожалуйста, удалите приветствия. Следует ли удалять из сообщений «Привет», «спасибо», слоганы и приветствия?