Необходимо сверстать и "оживить" интерфейс, макет которого расположен тут: https://www.figma.com/file/Ti2cpYwuWA5D0WulQAM92x/Test-assignment?node-id=0%3A1
В процессе выполнения тестового задания нужно использовать тестовый API, описание работы с которым см. ниже.
- Интерфейс должен быть сверстан в полном соответствии макету
- Внешний вид интерфейса при редактировании должен оформляться с учетом предложенного дизайна компонентов UI
- Там, где верстка не предусмотрена дизайном макета, нужно принять самостоятельное решение по внешнему виду элементов
- Для реализации интерфейса необходимо использовать ReactJS
- Интерфейс должен уметь:
- отображать данные, полученные из API
- отправлять к API запрос на редактирование данных карточки
- отображать обновленные данные после успешного редактирования
- загружать/удалять приложенные картинки
- отправлять запрос на удаление карточки
- Результат выполнения задания должен быть выложен в любой открытый репозиторий
API возвращает информацию по одной организации GET /companies/12 и одному контакту организации GET /contacts/16.
API не выполняет реальных действий сохранения данных.
API временно сохраняет загруженные изображения.
Работа с API возможна после получения авторизационного токена
GET /authGET /companies/IDPATCH /companies/IDDELETE /companies/IDPOST /companies/ID/imageDELETE /companies/ID/image/IMAGE_NAMEGET /contacts/IDPATCH /contacts/ID
GET /auth
Параметры запроса
user=USERNAME
Ответ:
HTTP 200 OK
Authorization: Bearer _token_
Пример:
$ curl -v -X GET http://135.181.35.61:2112/auth?user=USERNAME
GET /companies/ID
Ответ:
HTTP 200 OK
{
"id":"12",
"contactId": "16",
"name":"ООО Фирма «Перспективные захоронения»",
"shortName":"Перспективные захоронения",
"businessEntity":"ООО",
"contract": {
"no":"12345",
"issue_date":"2015-03-12T00:00:00Z"
},
"type": [
"agent",
"contractor"
],
"status":"active",
"photos": [
{
"name":"0b8fc462dcabf7610a91.jpg",
"filepath":"http://135.181.35.61:2112/0b8fc462dcabf7610a91.jpg",
"thumbpath":"http://135.181.35.61:2112/0b8fc462dcabf7610a91_160x160.jpg"
}
],
"createdAt":"2020-11-21T08:03:00Z",
"updatedAt":"2020-11-23T09:30:00Z"
}
Пример:
$ curl -X GET http://135.181.35.61:2112/companies/12 -H "Content-Type: application/json" -H "Authorization: Bearer _token_"
PATCH /companies/ID
Параметры запроса
Content-Type: application/json
Authorization: Bearer _token_
{
"name": _UPDATED_NAME_STR_,
"shortName": _UPDATED_SHORTNAME_STR_,
"businessEntity": _UPDATED_BUSINESS_ENTITY_STR_,
"contract": {
no: _UPDATED_CONTRACT_NO_STR_,
issue_date: _UPDATED_CONTRACT_ISSUE_DATE_DATE_,
},
type: _UPDATED_TYPES_ARRAY_
}
Пример:
$ curl -X PATCH http://135.181.35.61:2112/companies/12 -H "Content-Type: application/json" -H "Authorization: Bearer _token_" -d '{"name":"ООО Фирма «Крайне Перспективные Захоронения»", "shortName":"КПЗ"}'
DELETE /companies/ID
Ответ:
HTTP 200 OK
POST /companies/ID/image
Параметры запроса
Content-Type: multipart/form-data
Authorization: Bearer _token_
file=FILE
Ответ:
HTTP 200 OK
{
"name":"24a7b93b9adc015fdb06.png",
"filepath":"http://135.181.35.61:2112/images/vera/24a7b93b9adc015fdb06.png",
"thumbpath":"http://135.181.35.61:2112/images/vera/24a7b93b9adc015fdb06_160x160.png"
}
Пример:
curl -v -X POST http://135.181.35.61:2112/companies/12/image -H "Content-Type: multipart/form-data" -H "Authorization: Bearer _token_" -F "file=@/path/to/file.png"
DELETE /companies/ID/image/IMAGE_NAME
Ответ:
HTTP 200 OK
Пример:
curl -v -X DELETE http://135.181.35.61:2112/companies/12/image/6387dd7ab672f0acedc9.jpg -H "Authorization: Bearer _token_"
GET /contacts/ID
Ответ:
HTTP 200 OK
{
"id":"16",
"lastname":"Григорьев",
"firstname":"Сергей",
"patronymic":"Петрович",
"phone":"79162165588",
"email":"grigoriev@funeral.com",
"createdAt":"2020-11-21T08:03:26.589Z",
"updatedAt":"2020-11-23T09:30:00Z"
}
Пример:
curl -v -X GET http://135.181.35.61:2112/contacts/16 -H "Content-Type: application/json" -H "Authorization: Bearer _token_"
PATCH /contacts/ID
Параметры запроса
Content-Type: application/json
Authorization: Bearer _token_
{
"lastname":"Григорьев",
"firstname":"Сергей",
"patronymic":"Петрович",
"phone":"79162165588",
"email":"grigoriev@funeral.com",
}
Пример:
curl -v -X PATCH http://135.181.35.61:2112/contacts/16 -H "Content-Type: application/json" -H "Authorization: Bearer _token" -d '{"phone":"79162165556"}'