REST (Representational State Transfer) — это архитектурный стиль проектирования распределенных систем, впервые описанный Роем Филдингом в 2000 году. Рассмотрим ключевые аспекты REST применительно к Android-разработке.
Клиент-серверная архитектура
Stateless (без состояния)
// Плохо (с состоянием):
GET /next_page // Сервер должен помнить текущую страницу
// Хорошо (RESTful):
GET /pages?number=2
Кэширование
Cache-Control
, ETag
, Last-Modified
Единообразие интерфейса
// Примеры хороших URI:
/users // коллекция
/users/42 // конкретный элемент
/users/42/posts // подколлекция
Слоистая система
// Пример JSON-представления пользователя
{
"id": 42,
"name": "John Doe",
"email": "john@example.com"
}
Метод | Описание | Пример использования |
---|---|---|
GET | Получить ресурс | GET /users/42 |
POST | Создать ресурс | POST /users с телом |
PUT | Полностью обновить ресурс | PUT /users/42 с телом |
PATCH | Частично обновить ресурс | PATCH /users/42 с телом |
DELETE | Удалить ресурс | DELETE /users/42 |
interface UserApi {
@GET("users/{id}")
suspend fun getUser(@Path("id") userId: Long): User
@POST("users")
suspend fun createUser(@Body user: User): Response<Unit>
@PUT("users/{id}")
suspend fun updateUser(@Path("id") userId: Long, @Body user: User)
@DELETE("users/{id}")
suspend fun deleteUser(@Path("id") userId: Long)
}
REST vs SOAP
REST vs GraphQL
REST — это архитектурный стиль, основанный на ресурсах, HTTP-методах и стандартных кодах состояния. В Android-разработке RESTful API чаще всего реализуют через Retrofit, что обеспечивает удобное и типобезопасное взаимодействие с сервером.