#rest #symfony #laravel #laravel-4
#rest #symfony #laravel #laravel-4
Вопрос:
У меня есть настройка, ориентированная на API, созданная с помощью Laravel 4, состоящая из REST API, интерфейса и панели администрирования. И интерфейс, и adminpanel используют API, используя внутренние запросы.
Я делаю внутренние запросы следующим образом:
$request = Request::create($endpoint, $method, $parameters, $cookies, $files, $server, $content);
$this->response = Route::dispatch($request);
И все работает нормально.
Теперь я хочу защитить API, используя подход, аналогичный подходу AWS, и когда я создаю запрос выше, я хочу также установить некоторые пользовательские заголовки (ключ api, подпись, временная метка).
Я не нашел способа добавить заголовки к пользовательскому запросу. Возможно ли это при использовании внутренних запросов?
Ответ №1:
Оказывается, настройка заголовков так же проста, как выполнение
$request->headers->set('MyHeaderName', 'header value');
перед отправкой запроса.
Проблема (и причина, по которой это не сработало, когда я пытался) заключается в том, что в API я должен использовать Route::getCurrentRequest()
для получения моего пользовательского запроса (в отличие от простого запроса фасада запроса):
$request = Route::getCurrentRequest();
$all_headers = $request->header();
$specific_header = $request->header("SomeHeaderName");
Комментарии:
1.
Request::instance()->headers->set('MyHeaderName', 'header value');
также возможно.
Ответ №2:
Вы можете установить заголовки, используя событие приложения в вашем filters.php
App::after(function($request, $response)
{
$response->headers->set('key','value');
});
Если вы обнаружите, что используете их много, перемещение их в их собственный поставщик услуг может обеспечить лучшую структуру.
Комментарии:
1. Спасибо, но, боюсь, это не сработает. Мне нужно иметь возможность прикреплять заголовки так, как я могу прикреплять $cookies, а затем Route::dispatch() все это.