Продукт "Şañıraq.kz" должен идти в ногу со временем и предоставлять инновационные решения пользователям.
В будущем мы хотим добавить поиск по локации на карте, поэтому нам важно добавить широту и долготу к каждому объявлению.
На данном спринте мы поработаем над добавлением новой фичи и также возьмем пару задач из беклога:
- Интеграция с
here.com
, для получения координат из адреса. В дальнейшем мы добавим поиск по ближайшим квартирам. - Избранные объявления. Пользователи должны иметь возможность сохранить некоторые объявления, чтобы вернуться к ним позже.
- Аватар профиля пользователя. Пользователям важно иметь свою идентичность.
После завершения данного спринта разверните разработку на railway.
На предыдущих спринтах мы разрабатывали роут для создания объявления - POST /shanyraks/
.
Нужно добавить функционал, чтобы перед добавлением объявления в базу данных, API получает координаты дома и прикрепляет широту и долготу к объявлению.
Соответственно, нужно изменить ответ роута GET /shanyraks/{id}
, чтобы добавить поле location
как указано в примере ниже.
HTTP/1.1 200 OK
{
"_id": "507f191e810c19729de860ea",
"address": "Астана, Алматы р-н, ул. Нажимеденова, 16 – Сарыколь",
"..."
"location": {
"latitude": 43.23624,
"longitude": 76.929851
}
}
Пользователи должны иметь возможность добавлять объявления в избранное. Для этого предлагается создать новый роут POST /auth/users/favorites/shanyraks/{id}
, где {id}
- идентификатор объявления.
POST /auth/users/favorites/shanyraks/{id} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
Также пользователи должны иметь возможность просматривать свой список избранных объявлений. Создать роут GET /auth/users/favorites/shanyraks
который вернет список избранных объявлений пользователя.
GET /auth/users/favorites/shanyraks HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"shanyraks": [
{
"_id": "{shanyrak_id1}",
"address": "Астана, Алматы р-н, ул. Нажимеденова, 16 – Сарыколь"
},
{
"_id": "{shanyrak_id2}",
"address": "{address2}"
}
"..."
]
}
Пользователь должен иметь возможность удалить объявление из списка избранных. Создать роут DELETE /auth/users/favorites/shanyraks/{id}
для удаления объявления из списка избранных.
DELETE /auth/users/favorites/shanyraks/{id} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
Пользователи должны иметь возможность загружать свои аватары. Создать роут POST /auth/users/avatar
для загрузки аватара пользователя.
POST /auth/users/avatar HTTP/1.1
Authorization: Bearer {token}
avatar.png
HTTP/1.1 200 OK
Добавить возможность просмотра аватара пользователя в ответ на запрос GET /auth/users/me
. В ответе на этот запрос должен быть URL загруженного аватара пользователя.
GET /auth/users/me HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"_id": "{user_id}",
"email": "{почта текущего пользователя}",
"phone": "+7 700 698 5025",
"name": "Далида Е.",
"city": "Алматы",
"avatar_url": "https://{s3_service}/users/{user_id}/avatar.png"
}
Пользователи должны иметь возможность удалить свой аватар. Создать роут DELETE /auth/users/avatar
для удаления аватара пользователя.
Здесь следует учесть, что нужно удалить файл из S3 и удалить ссылку на файл в MongoDB.
DELETE /auth/users/avatar HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK