Cover Image

Давайте построим API

28-09-2019

PHP API to MySQL Database – это по научному. Если простыми словами рассказать, то придется прибегнуть к аналогиям.

Данные / Контент

Нам нужно работать с данными. Запрашивать их, изменять, удалять. Тексты, картинки, даты, лайки, комментарии, посты, статьи, видео, анимации – все это контент. Контент – это и есть данные.

Функционал

GET – это запрос данных, когда мы ничего не хотим сделать с ними, только их посмотреть.

PUT – Это добавление данных, когда мы хотим сохранить данные.

DELETE – это удаление данных

Аналогии

Мы стоим перед стойкой ИНФОРМАЦИЯ в аэропорту, мы только что приземлились и нам надо уехать дальше.
За стойкой симпотичная девушка, которая готова выслушать вас. Вы делаете вдох, форулируя вопрос, а пока вы это делаете, девушка видит ваш интерес и предлагает помощь. Она задает вопрос “Чем могу помочь?”

Все описанное выше – это ваш запрос (готовность задать вопрос) к API (девушка за стойкой). Что-то типа

/api/start – это обращение на сервер, это ваш запрос. И это GET запрос. Мы так настроили API, что при таком запросе, мы принимаем только GET.

API (девушка) получила этот запрос и сразу на него ответила:

“Чем могу помочь?” – это ответ сервера, где находится логика, которая определила запрос и сопоставила ему ответ, и отправила ответ. Сервер отвечает в формате JSON. Примерно так будет выглядеть ответ сервера:

{
  "message": "Чем могу помочь?"
}

… где мы остановились… а, точно.. И так она задала вопрос и вам нужно ответить. Вас интересует трансфер из аэропорта в другой город, пусть это будет Хельсинки. Вы задаете вопрос: “Как добраться до города Хельсинки?”

Понятно, что девушка вас понимает, но как быть в случае API? А все просто, мы должны отправить GET запрос такого вида:

/api/transfer/helsinki 

Но, позвольте, откуда мы знаем как должен выглядеть запрос? Только девушка (API) может нам сказать. Причем, пусть она предлагает варианты сразу, широко улыбаясь. Примерно так:

“Добрый день, мы предлагаем: трансфер, заказ такси, комнату в отеле.”

{
  "message": {
    "welcome": "Добрый день, мы предлагаем",
    "трансфер": "/api/transfer",
    "такси": "/api/booktaxi",
    "комнату в отеле": "/api/bookroom"
  }
}

Вот теперь порядок. Когда мы запросим /api/start мы получим и приветствие, и возможность выбрать направление.

Теперь когда мы знаем, что про трансфер мы можем узнать, если сделаем запрос /api/transfer Но, что там про город..? А город пусть нам подскажет девушка, и опять сразу же как только я спросил про трансфер. Иными словами, при GET запросе /api/transfer, сервер нам ответит с вариантами.

{
  "message": {
    "welcome": "Добрый день, мы предлагаем",
    "трансфер": "/api/transfer",
    "такси": "/api/booktaxi",
    "комнату в отеле": "/api/bookroom"
  }
}

Понимаете?

Мы запрашиваем данные, обращаясь на API сервера и получаем в ответ новые варианты запросов.

Сервер

Продолжение следует… Есть вопросы? Пишите комменты..