Приведу пример описания API, которое было на моём демо-экзамене:
API доступно по адресу http://car.areas.su/ Для работы с API метод принимает в теле application/json Например: Метод входа. Ссылка http://cars.areas.su/login
Request Body(application/json)
{ "username":"serk", "password":"123" }Response
{ "notice": { "token":111520 } }1 /login – метод для получения ключа для входа
- Используется метод POST
- Формат запроса JSON
- Принимает два ключа username и password
- ответ в формате JSON
2 /logout – метод обнуления действия token
- Используется метод POST
- Формат запроса JSON
- Принимает ключ username
3 /signup – метод регистрации нового пользователя
- Используется метод POST
- Формат запроса JSON
- Принимает ключ username, email, password
4 /cars – метод для получения свободных автомобилей
- Используется метод GET
- Формат ответа JSON
5 /history – метод для получения истории вождения
- Используется метод POST
- Формат запроса JSON
- Принимает ключ token
- Формат ответа JSON
Несколько косноязычно и не расписаны "подводные камни". Логика авторизации такая, что если токен уже получен, то новый не выдается - нужно сначала разлогиниться.
Методы есть как публичные (/cars), так и требующие авторизации (/history - это видно по тому, что в параметрах требуется токен).
Я на примере этого разработал АПИ для ваших баз:
Создаем файл api.http:
Примеры запросов реализованы в формате плагина REST Client для Visual Studio Code
Прописываем в нем URL сервера:
@url=http://s4a.kolei.ru
Проверить работоспособность можно послав запрос /about:
GET {{url}}/about
Для авторизации нужно послать POST запрос /login в формате application/json с параметрами username и password (соответственно логин и пароль к ВАШЕЙ базе MySQL)
### логин
# @name login
POST {{url}}/login
Content-Type: application/json
{
"username": "esmirnov",
"password": "111103"
}
###
@token={{login.response.body.$.notice.token}}
Тут встречаются средства автоматизации REST Client-а:
# @name login этой командой мы присваиваем имя текущему запросу@token={{login.response.body.$.notice.token}} а здесь, используя ответ команды достаём токен. Таким образом для последующих команд не надо выписывать на бумажке токен и править запросы.При успешном ответе придет токен авторизации:
{
"notice": {
"token": 2200743
}
}
При ошибке текст ошибки в поле answer:
{
"notice": {
"answer": "Пользователь уже авторизован, используйте токен или перелогиньтесь"
}
}
То есть при получении ответа вы должны разобрать полученный JSON, если есть токен, то можно продолжать работать. Если ошибка, то показать Alert с ошибкой и остаться на экране авторизации.
Для выхода нужно послать POST запрос /logout c параметом username:
POST {{url}}/logout
Content-Type: application/json
{
"username": "esmirnov"
}
Для запроса данных из базы нужно послать GET запрос с названием таблицы. В заголовке запроса передать токен полученный при авторизации (я сначала сделал передачу токена в заголовке, а только потом увидел, что надо было передавать в теле запроса).
GET {{url}}/Product
Content-Type: application/json
Token: {{token}}
В ответ должны получить содержимое таблицы:
{
"notice": {
"data": [
{
"ID": 1,
"Title": "Колесо R18 Кованый",
"ProductTypeID": 128,
"ArticleNumber": "241659",
"Description": null,
"Image": "\\products\\tire_15.jpg",
"ProductionPersonCount": 4,
"ProductionWorkshopNumber": 10,
"MinCostForAgent": 11509
},
...
]
}
}
Для получения изображений нужно выделить его название из поля Image и сформировать GET запрос:
GET {{url}}/img/tire_0.jpg