2016-10-27 17 views
6

Ứng dụng của tôi đang tạo một mục nhập mới thông qua yêu cầu POST trong điểm kết thúc api.Thông báo lỗi xác thực dưới dạng JSON trong Laravel 5.3 REST

Bây giờ, nếu bất kỳ xác nhận nào không thành công thì thay vì trả về một lỗi json, laravel 5.3 sẽ chuyển hướng yêu cầu đến trang chủ.

Đây là bộ điều khiển của tôi:

public function create(Request $request) 
{ 
    $organization = new Organization; 

    // Validate user input 
    $this->validate($request, [ 
     'organizationName' => 'required', 
     'organizationType' => 'required', 
     'companyStreet' => 'required' 
    ]); 

    // Add data 
    $organization->organizationName = $request->input('organizationName'); 
    $organization->organizationType = $request->input('organizationType'); 
    $organization->companyStreet = $request->input('companyStreet'); 
    $organization->save(); 
    return response()->json($organization); 
} 

Nếu không có vấn đề với xác nhận sau đó đơn vị sẽ được thêm vào thành công trong cơ sở dữ liệu, nhưng nếu có vấn đề với việc chứng thực theo yêu cầu sau đó thay vì gửi tất cả các lỗi tin nhắn như là một phản ứng json nó chuyển hướng trở lại trang chủ.

Làm thế nào tôi có thể đặt kiểu trả về hợp lệ thành json, do đó, với mọi yêu cầu nếu xác thực không thành công thì Laravel sẽ gửi tất cả các thông báo lỗi là json theo mặc định.

Trả lời

4

Bạn có thể làm xác nhận của bạn như:

$validator = \Validator::make($request->all(), [ 
     'organizationName' => 'required', 
     'organizationType' => 'required', 
     'companyStreet' => 'required' 
    ]); 

    if ($validator->fails()) { 
     return response()->json($validator->errors(), 422) 
    } 
2

Các xác nhận sử dụng trong câu hỏi trông theo sự giới thiệu của laravel. Lý do chuyển hướng là nó ném một ngoại lệ mà bạn có thể dễ dàng nắm bắt bằng cách sử dụng mã dưới đây. Vì vậy, tốt hơn nên sử dụng cách mã được đề xuất thay vì viết lại mã khung của khuôn khổ một lần nữa :)

public function create(Request $request) 
{ 
    $organization = new Organization; 

    // Validate user input 
    try { 
     $this->validate($request, [ 
      'organizationName' => 'required', 
      'organizationType' => 'required', 
      'companyStreet' => 'required' 
     ]); 
    } catch (ValidationException $e) { 
     return response()->json($e->validator->errors(), 422); 
    } 

    // Add data 
    $organization->organizationName = $request->input('organizationName'); 
    $organization->organizationType = $request->input('organizationType'); 
    $organization->companyStreet = $request->input('companyStreet'); 
    $organization->save(); 
    return response()->json($organization, 201); 
} 
+0

Tôi sẽ cố gắng! Cảm ơn \ – rakibtg

+0

@rakibtg bạn được chào đón, hãy nhớ chấp nhận câu trả lời nếu nó đáp ứng yêu cầu. –

Các vấn đề liên quan