Я строю API RESTful с Laravel. Мой API всегда возвращает JSON. То, что я хотел бы сделать, - поддерживать логику ответа в одном месте. Вот как я делаю это прямо сейчас в контроллере API, на который указывает Route::controller()
. Смешной и ультра-полезный пример подходит:Ответ RESTful API в Laravel 5
public function getDouble($number) {
try {
if (!is_numeric($number)) {
throw new HttpException(400, 'Invalid number.');
}
$response = $number * 2;
$status = 200;
}
catch (HttpException $exception) {
$response = $exception->getMessage();
$status = $exception->getStatusCode();
}
return response()->json($response, $status);
}
В этом примере, мой API маршрут будет, например /double/13
доступом методом GET. Проблема в том, что я повторяю эту попытку ... catch block в каждом методе. Я бы хотел, чтобы мои методы API были такими:
public function getDouble($number) {
if (!is_numeric($number)) {
throw new HttpException(400, 'Invalid number.');
}
return $number;
}
А затем поймайте эти исключения и сформируйте JSON в другом месте. Каков наилучший подход с точки зрения хорошей архитектуры приложения?
My $ response - простая строка, это неправильно? –
'$ response', когда casted to string будет давать отображаемую строку. Его предполагаемое поведение. – ultimate
Да, но я ответил 'var_dump' на $ response в моем промежуточном программном обеспечении, и он говорит, что это строка, а не объект. –