Как отправить HTTP-запрос к API
Короткий ответ
Простой запрос GET выполняет file_get_contents():
<?php
// rates.php
$data = json_decode(file_get_contents('https://api.example.com/rates'), true);
echo $data['rates']['EUR'];POST с JSON
Для отправки данных и заголовков используйте cURL:
<?php
// create-order.php
$curl = curl_init('https://api.example.com/orders');
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode(['product_id' => 42]),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
]);
$body = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($body === false || $status >= 400) {
exit('Request failed');
}
$order = json_decode($body, true);Не забудьте про время ожидания
Без CURLOPT_TIMEOUT запрос к зависшему сервису будет держать вашу страницу открытой.
Функции из этого ответа
- curl_init — Создаёт запрос cURL.
- curl_setopt — Задаёт настройку запроса cURL.
- json_decode — Разбирает строку JSON.