Метод asForm
Метод asForm применяется к HTTP-клиенту Laravel и указывает, что данные запроса должны быть отправлены в формате application/x-www-form-urlencoded. Этот формат используется по умолчанию при отправке данных через HTML-формы. Метод не принимает параметров и возвращает тот же экземпляр клиента для цепочки вызовов.
Синтаксис
<?php
use Illuminate\Support\Facades\Http;
$response = Http::asForm()->post($url, $data);
?>
Пример
Отправим POST-запрос на внешний API с данными в формате формы:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class ApiController extends Controller
{
public function sendData()
{
$data = [
'name' => 'John',
'email' => 'john@example.com',
'age' => 30
];
$response = Http::asForm()
->post('https://api.example.com/users', $data);
return $response->json();
}
}
?>
Результат выполнения кода:
["status" => "success", "message" => "User created"]
Пример
Отправим PUT-запрос для обновления данных в формате формы:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Http;
class UserController extends Controller
{
public function updateUser($id)
{
$data = [
'name' => 'Jane',
'email' => 'jane@example.com'
];
$response = Http::asForm()
->put("https://api.example.com/users/{$id}", $data);
if ($response->successful()) {
return $response->json();
}
return ['error' => 'Update failed'];
}
}
?>
Результат выполнения кода:
["id" => 1, "name" => "Jane", "email" => "jane@example.com"]
Пример
Используем метод asForm вместе с другими методами HTTP-клиента:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Http;
class FormController extends Controller
{
public function submitForm()
{
$res = Http::asForm()
->withHeaders([
'X-Custom-Header' => 'CustomValue'
])
->timeout(30)
->post('https://api.example.com/submit', [
'field1' => 'value1',
'field2' => 'value2',
'field3' => 'value3'
]);
if ($res->successful()) {
return $res->object();
}
return ['error' => 'Request failed'];
}
}
?>
Результат выполнения кода:
{"status":"ok","data":{"field1":"value1","field2":"value2","field3":"value3"}}
Пример
Отправим DELETE-запрос с параметрами в формате формы:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Http;
class DeleteController extends Controller
{
public function deleteItems()
{
$params = [
'ids' => [1, 2, 3, 4, 5]
];
$response = Http::asForm()
->delete('https://api.example.com/items', $params);
if ($response->failed()) {
return ['error' => 'Deletion failed'];
}
return ['success' => 'Items deleted'];
}
}
?>
Результат выполнения кода:
["success" => "Items deleted"]
Смотрите также
-
метод
asJson,
который отправляет данные в формате JSON -
метод
withHeaders,
который добавляет заголовки к запросу -
метод
post,
который выполняет POST-запрос -
метод
timeout,
который устанавливает таймаут для запроса