API-интерфейс laravel не показывает сообщение о подтверждении запроса - PullRequest
0 голосов
/ 03 февраля 2019

У меня проблемы с обработчиком ошибок в моем бэкэнде API laravel, не отображается сообщение об ошибке проверки.

routs / api

<?php
Route::group([

    'middleware' => 'api',

], function ($router) {
    Route::post('access/sign-up', 'AuthenticationController@signUp');
});

AuthenticationController

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\SignUpRequest;
use Illuminate\Http\Request;
use App\User;


    class AuthenticationController extends Controller
    {
        /**
         * Create a new AuthenticationController instance.
         *
         * @return void
         */
        public function __construct()
        {
            $this->middleware('auth:api', ['except' => ['signUp']]);
        }


        /**
         * 
         *
         * @return \Illuminate\Http\JsonResponse
         */
        public function signUp(SignUpRequest $request)
        {
            //User::create($request->all());
            return response()->json([
                'data' => 'Usuario creado correctamente.'
            ]);
        }
    }

SignUpRequest

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class SignUpRequest 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 [
            'email' => 'required|email|unique:users',
            'firstName' => 'required',
            'password' => 'required',
        ];
    }


}

Дело в том, что когда почтальоном я отправляю пароль пустым или не отправляю, например, почту, он отправляет меня на главную страницу, на которой отправляют мне json со всеми ошибками, как и раньше.Я не знаю что делатьЯ попытался с пользовательским сообщением в SignUpRequest, но это не проблема, подумайте, какое-то перенаправление в обработчике ошибок.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Использование формы запроса;Если проверка не пройдена, будет сгенерирован ответ о перенаправлении, чтобы отправить пользователя обратно в его предыдущее местоположение.Вот почему вы перенаправляете обратно на страницу вместо ответа JSON.

У Laravel есть один защищенный метод - failValidation.Перезапишите этот метод в классе запроса формы.

  protected function failedValidation(\Illuminate\Contracts\Validation\Validator $validator)
{

    throw new \Illuminate\Validation\ValidationException(response()->json($validator->errors(), 422));
}
0 голосов
/ 03 февраля 2019

Просто добавьте этот код в SignUpRequest

 use Illuminate\Contracts\Validation\Validator;
 use Illuminate\Http\Exceptions\HttpResponseException;



protected function failedValidation(Validator $validator)
{
    throw new HttpResponseException(response()->json($validator->errors(), 422));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...