Итак, я пытаюсь разработать API отдыха для внутреннего проекта, и у меня возникает проблема, когда при сбое проверки запроса формы отображается ответ @index.
Итак, у меня есть два пути;
Route::get('/api/clients', 'ClientController@index');
Route::post('/api/clients', 'ClientController@store');
@index
перечисляет всех клиентов, @store
создает нового клиента, и у меня есть валидатор запроса формы для @store
метода, который проверяет, предоставлено ли имя для клиента.
Я хочу, чтобы в случае сбоя валидатора отображался ответ JSON с ошибками валидации. Но я думаю, что это происходит, так это сбой проверки, поэтому он перенаправляется обратно на ту же страницу, но перенаправляется GET
вместо POST
, поэтому вместо этого он перечисляет всех клиентов.
Я знаю, что вы можете настроить свои заголовки так, чтобы они выглядели как запрос ajax, в котором он будет правильно отображать ответ JSON, но я хочу, чтобы он отображал ответ JSON независимо от того, является ли он ajax или нет.
Я попытался переопределить метод response
в моем валидаторе, который не работал, я попытался установить метод wantsJson
в валидаторе так, чтобы он возвращал истину, что снова не сработало.
Помощь будет очень признательна.
Код ниже ...
web.php
Route::get('/api/clients', 'ClientController@index');
Route::get('/api/clients/{client}', 'ClientController@show');
Route::post('/api/clients', 'ClientController@store');
Route::put('/api/clients/{id}', 'ClientController@update');
Route::delete('/api/clients/{id}', 'ClientController@delete');
ClientController.php
namespace App\Http\Controllers;
use App\Client;
use App\Http\Requests\ClientRequest;
class ClientController extends Controller
{
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(ClientRequest $request)
{
return Client::create([
'title' => request('title'),
'user_id' => auth()->id()
]);
}
ClientRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ClientRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required'
];
}
/**
* Get the failed validation response for the request.
*
* @param array $errors
* @return JsonResponse
*/
public function response(array $errors)
{
dd('exit'); // Doesn't work
}
}