Как правильно обрабатывать код ошибки HTTP в приложении мультимодуля Compose?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно обрабатывать код ошибки HTTP в приложении мультимодуля Compose?

Сообщение Anonymous »

Я строю многомодульное приложение для входа в систему/регистрации. Мой бэкэнд обрабатывается с помощью Spring Boot, а функция входа в систему /регистрации возвращает ответ.

Код: Выделить всё

interface AuthApi {
@POST("/auth/register")
suspend fun register(
@Body request: RegisterRequest,
)

@POST("/auth/login")
suspend fun login(
@Body request: LoginRequest,
): TokenPair

@GET("authenticate")
suspend fun authenticate(
@Header("Authorization") token: String,
)
}

@Module
@InstallIn(SingletonComponent::class)
internal object NetworkModule {
@Provides
@Singleton
fun provideAuthApi(
okhttpCallFactory: dagger.Lazy,
): AuthApi {
return Retrofit.Builder()
.baseUrl(SPOTIFY_BASE_URL)
.callFactory { okhttpCallFactory.get().newCall(it) }
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(AuthApi::class.java)
}
< /code>
Тогда это мой модуль данных. < /p>
class AuthRepositoryImpl
@Inject
constructor(
private val api: AuthApi,
) : AuthRepository {

override suspend fun signIn(email: String, password: String): Result {
return try {
val user = api.login(LoginRequest(email, password))
Result.Success(user)
} catch (e: HttpException) {
when (e.code()) {
400 -> Result.Error(DataError.Network.BAD_REQUEST)
401 -> Result.Error(DataError.Network.UNAUTHORIZED)
409 -> Result.Error(DataError.Network.CONFLICT)
else -> Result.Error(DataError.Network.INTERNAL_SERVER_ERROR)
}
}
}

sealed interface DataError : Error {
enum class Network : DataError {
BAD_REQUEST,
CONFLICT,
UNAUTHORIZED,
INTERNAL_SERVER_ERROR,
}
}

sealed interface Result {
data class Success(val data: D) : Result
data class Error(val error: E) : Result
}
Моя проблема заключается в том, что в уровне данных я использую httpexception, которое поступает из модернизации (я добавляю модульную зависимость в модуле данных, а также для сетевого модуля). Что означает, что я не пользуюсь идеей мультимодуля.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ompose-app
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»