Как сделать свой веб-API? [закрыт]

135
01 марта 2019, 15:40

Как сделать свой простой веб-API, чтобы с этого API могли быть подключения на другой сайт?

Answer 1

Поскольку не совсем понятно из вашего вопроса, что же вы все-таки конкретно имели в виду, то придется немножко погадать.

Далее в этом ответе я буду считать, что вопрос заключается в том, как создать свой веб-API (исходя из тега "PHP", добавленного к вопросу).

Предыстория

Представьте себе такую ситуацию, что вы хотите создать приложение по обработке фотографий. Будем считать, что все, чем будет заниматься ваше приложение - это то, что оно будет делать переданное ему фото черно-белым.

Вот вы реализовали свою задумку для платформы Windows, скажем, на языке C#. Соответственно и алгоритм превращения фотографии в черно-белую у вас написан на этом языке.

Потом у вас появилось желание портировать свое приложение на Android, для чего вы переписали его с нуля (вместе с алгоритмом изменения цвета) на язык Java.

А через какое-то время и вовсе решили сделать веб-интерфейс, чтобы картинку можно было загрузить прямо в браузер, нажать на кнопочку и на выходе получить черно-белую версию этой же картинки. Алгоритм превращения фото в черно-белое вы, скажем, реализовали на том же сервере, на котором крутится и сам сайт, на языке Python.

Итого вы имеете один и тот же проект, выполняющий одну и ту же задачу, однако по-разному реализованный для трех различных платформ с использованием трёх различных технологий.

Но тут вы замечаете, что во всех трех реализациях алгоритма конвертации часть изображения обрезается (просто теряется). Выходит, что вам нужно изменить целых 3 реализации, исправить баг в алгоритме, реализованном по-разному сразу на трех различных языках. Еще хуже ситуация может стать только в том случае, если делать это придется уже не вам, а другому человеку, курирующему ваш проект.

Было бы намного удобнее, если бы сам процесс конвертации изображения в черно-белое был бы реализован в единственном экземпляре, не так ли? Но только как так сделать, если Android не умеет работать с Python (сугубо для примера), а на вашем веб-сервере нельзя запускать программы, написанные на C#?

Веб-API

Как вариант, можно оставить имеющуюся реализацию для веб-сервера, сделав для доступа к ней веб-обёртку (то есть веб-API).

Теперь, например, для конвертации изображения в черно-белое будет достаточно всего-лишь отправить POST-запрос по адресу "converter.com/black-and-white", в качестве параметра которого передать непосредственно само изображение (например, в виде строки шестнадцатиричных значений), а в ответ сервер будет посылать в том же виде уже обработанное изображение.

Преимущества очевидны. Теперь достаточно лишь сделать так, чтобы все 3 имеющихся (уже просто) UI (под Windows, Android и для веба) не занимались действительной конвертацией изображения, а просто отсылали его на сервер, который сделает все за них, в то время как сами UI будут заниматься исключительно посредничеством - получением фотографии от пользователя и передачи ему обработанного изображения.

Реализация

Этот процесс в деталях в рамках этого вопроса возможным описать не представляется хотя бы потому, что вы сами не знаете, какой конкретно API вам нужен. Но я буду придерживаться своего примера (см. выше) и реализацию опишу вкратце.

По идее, веб-API-приложение особо ничем не отличается от обычного веб-приложения (например, от блога или интернет магазина где-нибудь в интернете). Разница заключается лишь в том (хотя это и не ограничение), что простые веб-приложения (будем называть их просто сайтами) возвращают информацию по запросу в виде сгенерированных определенным образом (в зависимости от самого запроса) HTML-страниц, в то время как веб-API-приложения возвращают данные в других форматах. Как правило таких, которые не предназначены для отображения конечному пользователю, а еще нужны другим приложениям, которые в последствии что-то с ними (данными) будут делать.

Поэтому реализация API для примера выше на самом деле особо ничем отличаться от обычного какого-нибудь блога не будет. Просто при получении POST-запроса сервер не вернет HTML-страницу с ответом, а вызовет программу, которая обработает переданное фото, и затем вернет это фото, например, в виде простого текста.

чтобы с этого API могли быть подключения на другой сайт?

Эта часть "восстановлена" из оригинального вопроса лично мной, "перевод" может быть не совсем корректным.

Это тоже не добавляет каких-то отклонений от привычного алгоритма работы API. Просто в данном конкретном случае ваш API будет не вызывать какую-то программу, а будет сам обращаться к другому API, который, например, предоставляется 3-им сайтом. Не совсем понятно, в чем преимущество использования такого "посредника", но... Дело хозяйское.

READ ALSO
почему то не работает pm.process_idle_timeout для php-fpm mp ondemand

почему то не работает pm.process_idle_timeout для php-fpm mp ondemand

Centos 7, установлен apache в режиме mpm event и php-fpm

131
Ocmod, правка файла стилей

Ocmod, правка файла стилей

Пытаюсь поменять стили через ocmod, и проблема в том, что изменённый файл стилей появляется в папке модификаций system/storage/modification/catalog/view/theme/theme_lightshop/css/maincss,...

149
почему работает на половину?

почему работает на половину?

почему к значению которое выводится прибавляется 1?зеленый новичокучусь сам

132
Не работает смена переменной PHP+AJAX?

Не работает смена переменной PHP+AJAX?

Ребята! Голова уже пухнет, мучаю этот вопрос:

180