Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 06.07.2021
Сообщений: 1

Создание API

06.07.2021, 21:31. Показов 1234. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне стало интересно как вообще делают api , которое работает в форме get запроса в виде "url/api.add(get, delete и так далее)?parameters".
Как пример "example.com/method.add?param1=test&param2=test"
Я могу лишь предположить, что это rest api, но как вообще работает "method.add".Для меня это лишь php файл с функцией add, но я даже не знаю насколько это вообще возможно)
Знаю, что я плохо донес мысль, но лучше я и не придумаю вовсе...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.07.2021, 21:31
Ответы с готовыми решениями:

Создание простого API на сервере
Уважаемые,товарищи. Необходиом создать API приложение(не клиент).Погуглил поискал и вот хочу задать вопрос. Всё Апи сводится к обработке...

Создание группы и БАН через API Вконтакте
Проблема в создании группы в Вконтакте через API, скрипт уже написан. Авторизация проходит, создаем пустую группу через API VK с помощью...

Создание API на сайте для взаимодействия с устройством Android посредством Post запросов
Здравствуйте! У меня поставлена задача создать приложение ,в котором необходимо обмениваться данными с удаленной базой данных MySQL....

10
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.07.2021, 09:02
Цитата Сообщение от Slausti Посмотреть сообщение
как вообще работает "method.add"
Обыкновенная маршрутизация. Устанавливаете маршрутизатор, например FastRoute, регистрируете маршруты примерно так:
PHP
1
2
3
$router->addGroup('/api', function (RouteCollector $router) {
    $router->get('/add', 'handler');
});
Где handler -- callable-обработчик.

И всё, при запросе на https://example.com/api/add будет вызываться тот самый handler.

Добавлено через 7 минут
Если вы пока не понимаете, каким образом при обращении к тому адресу запустится маршрутизатор, почитайте про единую точку входа.
Вкратце: сервер при любом запросе (если указанных в URL файла/папки не существует) производит перенаправление запроса на один файл (front-контроллер) -- index.php (как правило).
0
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,882
07.07.2021, 11:59
Цитата Сообщение от Slausti Посмотреть сообщение
Я могу лишь предположить, что это rest api
В REST обычно действия в адресах не упоминаются. Даже если это какой-то "топорный адаптив", то действие указывается в специальном POST-параметре.

Добавлено через 10 минут
Я делаю адаптивы, опираясь на расширение форматов адресов при помощи специального GET-параметра с натуральным числом (?p=N, ?N) или иногда просто окончания пути с натуральным числом (~N, N) и на комбинирование POST-параметров, например:
GET /collection?p=N - N-ая страница списка элементов коллекции (максимальное количество элементов на странице может быть предопределено или явно передаваться в адресе или куках);
POST /collection?p=N - создание элемента или множественное удаление элементов коллекции в зависимости от наличия POST-параметра id (с id - это создание).

Ну, а просто /collection - это уже работа с коллекцией, как элементом "коллекции коллекций".

Добавлено через 10 минут
В админке, над которой я сейчас работаю, напрямую управлять коллекциями как элементами нельзя, поэтому /collection имеет другой смысл - чтение/обновление специального элемента коллекции, у которого нет идентификатора (точнее он есть, но состоит из пустой строки). Создавать/удалять такой элемент из админки нельзя.

Добавлено через 5 минут
А еще иногда удобнее всего удалять путем записи пустого значения
Самые безопасные способы передачи данных эл. кошельков/логинов/паролей
Создание уникальной, динамической страницы посредством PHP. Как реализовать?
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
07.07.2021, 18:53
Я всё понимаю, что ветка PHP, но, на всякий случай, о способе который порой куда проще. Это делается роутингом но в .htaccess.
Code
1
RewriteRule ^site/method.add ./site/index.php?method=add [QSA]
PHP
1
print_r($_GET);
в адресной строке браузера
example.com/site/method.add?param1=test&param2=test
HTML5
1
Array ( [method] => add [param1] => test [param2] => test )
0
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,882
07.07.2021, 20:21
HotReboot, если вы считаете это простым, вы просто "не познали вкус" использования единой точки входа.

В контексте разговора про создание API упоминание "роутинга" в .htaccess выглядит особенно весело

Добавлено через 5 минут
К слову, единая точка входа - это не только маршрутизация, но и вынесение во фронт-контроллер других общих действий, например авторизации.

Также во фронт контроллер можно выносить действия, общие для большой части функций, например проверку существования запрошенной коллекции и выборку ее собственных данных.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.07.2021, 20:26
Цитата Сообщение от estic Посмотреть сообщение
вынесение во фронт-контроллер других общих действий, например авторизации
Это как?
Цитата Сообщение от estic Посмотреть сообщение
Также во фронт контроллер можно выносить действия, общие для большой части функций, например проверку существования запрошенной коллекции и выборку ее собственных данных.
А это как?

Лучше в виде кода, без объяснений.
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
07.07.2021, 21:19
estic, Я вообще противник ООП так как считаю это модной попсой с рюшечками и поэтому мне ваши контролеры в тут не помогут.
0
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,882
07.07.2021, 22:47
Цитата Сообщение от Para bellum Посмотреть сообщение
Лучше в виде кода, без объяснений.
Я прямо написал. Понимаю, что для человека, испорченного Request-ами с Response-ами, такие простые вещи могут показаться странными

Цитата Сообщение от HotReboot Посмотреть сообщение
Я вообще противник ООП так как считаю это модной попсой с рюшечками и поэтому мне ваши контролеры в тут не помогут.
Как ни странно, это с ООП может быть вообще не связано. Просто использовал привычную терминологию. Я пишу не только с использованием ООП, но и без. Также часто "активно совмещаю".

Добавлено через 5 минут
Кстати, это терминология не ООП, а MVC и т.п. Или вы и MVC не используете?

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

Добавлено через 8 минут
Для примера вот вам полный набор функций за вычетом т.н. File API одного реального API:
0, 1 / - действия, связанные с авторизацией и общей настройкой профиля пользователя;
2, 3 /~N[/] - список доменов, их добавление и удаление;
4, 5 /domain[/] - чтение/запись данных домена;
6, 7 /domain~N[/] - список "фильтров" (любых внутренних адресов) домена, их добавление и удаление;
8, 9 /domain/filter - чтение/запись данных фильтра (т.к. фильтр - это любой внутренний адрес, там может быть своя строка GET-параметров и т.п.).

Это REST-адаптив, основанный только на двух HTTP-методах (POST и GET). Каждая пара функций в списке соответствует двум разным методам. Так вот номера функций могут просто определять имена файлов, например 0.php. Это полный набор файлов-обработчиков, не считая обработчика ошибки, который может бы опреден во фронт-контроллере в виде обычной функции или, например, вынесен в файл -1.php
1
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,882
08.07.2021, 08:43
Para bellum, касательно второго "это как?" на показанном выше примере... Функции 4-9 требуют проверки домена, получения каких-то данных о нем. Во фронт-контроллере перед вызовом функции можно, например, сделать так:
PHP
1
2
3
4
5
6
7
if ($index > 3)
{
    validateDomain($path[0]);
 
    // проверку пользователя можно вынести из запроса; написал так для краткости
    $args[] = findOrFail("SELECT * FROM `{$table()}` WHERE `uid`={$user['id']} AND `id`='{$path[0]}'");
}
$args - массив для накопления параметров функции. Если происходит какое-то исключение, функцию даже не пытаемся вызывать.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
08.07.2021, 12:05
estic, это ерунда какая-то. Предположим, есть большое приложение (сайт), с богатой функциональностью. Если подобные проверки выносить во front-контроллер, он быстро в свалку превратится.
Подобную валидацию следует выносить в отдельную службу: она по-разному называется -- filters/middleware и т.д.
https://symfony.com/doc/curren... lters.html
0
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,882
08.07.2021, 13:10
Para bellum, "можно" не означает, что всегда нужно так делать. Но, например, та же авторизация в API часто нужна для всех функций.

Добавлено через 2 минуты
Цитата Сообщение от Para bellum Посмотреть сообщение
Подобную валидацию следует выносить в отдельную службу: она по-разному называется -- filters/middleware и т.д.
Я в курсе Суть абсолютно та же, что и в моем простом примере.

Добавлено через 4 минуты
Кстати, хороший критерий: если вы видите, что фронт-контроллер начинает "превращаться в свалку", остановитесь

Добавлено через 1 минуту
Или наполните эту свалку до упора и больше туда не заглядывайте

Добавлено через 4 минуты
Когда цепь фильтров настолько велика, что "не видно света в конце туннеля", ее тоже нужно "разгружать", ну, или по крайней мере больше не "нагружать".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.07.2021, 13:10
Помогаю со студенческими работами здесь

Steam API - как можно получить медиану цен через API?
Ребят, как можно получить медиану цен через API ? Интересует количество продаж за последний день. Инфу по предмету получаю таким...

Создание модуля/скрипта используя google maps API
Здравствуйте, помогите сделать такую фишку как на картинке, или подскажите какие-то уроки для создания такого. Или может есть уже готовый...

Создание API
Есть пара asp.net (web forms) страниц. Нужно реализовать api. На данный момент сделал это с помощью универсальных обработчиков *.ashx...

создание API по XML
Здравствуйте. Есть php сервер который имеет API. Данные принимаются через POST параметры, на сервере происходит обработка ответа и...

Создание собственных API
Хочу интегрировать две программы для обмена между ними информацией. Как создавать собственные API функции для програм?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru