Мне нужно включить некоторую форму вызова API в мой сайт по замораживанию пользователей, однако мне трудно найти способ сделать это.
Я видел, что один из способов добавить PHP в файлы веток — это создать расширение, но, похоже, это не то, что я ищу.
Мне нужно иметь возможность извлекать данные с помощью стороннего API, с которым я ранее использовал PHP для выполнения вызовов, однако, если кто-то из вас сочтет, что для этого нужно использовать другой метод, я открыт для предложений
ТИА
Для Userfrosting> 4.1 в файле sprinkle / composer.json добавьте требование включить Guzzle:
"require": {"guzzlehttp/guzzle": "~6.0"}
(не забудьте запустить composer update
установить новую зависимость.
Тогда в вашем контроллер включить жрать:
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Exception\ConnectException;
тогда вы можете начать жрать с:
$client = new Client([
'base_uri' => $config['api']['host'].'/',
'timeout' => 5 // your timeout param
]);
(Я установил свой хост API в конфигурации sprinkle, используя переменную окружения, чтобы она не была жестко задана).
затем вы можете сделать запрос POST следующим образом, вернув ответ в переменную.
$api_response = $client->post('your_api_route', [
'json' => [
'api_param_1' => 'Hello',
'api_param_2' => 'World!'
]
]);
Также рекомендуется завернуть последний бит в try
и лови глотки / http исключения.
Если ваш ответ является документом JSON, вы можете извлечь содержимое в массив с помощью:
$data = json_decode($api_response->getBody()->getContents(), true);
Я разговариваю с API в моей настройке пользовательской заморозки в контроллере, вызываемом моим маршрутом, а затем передаю эти данные в мой шаблон. Проверьте первый урок о том, как создать новый шаблон и передать в него данные. Делайте с PHP все, что вам нужно в маршруте (через контроллер).