Phản hồi json xác thực tùy chỉnh của Laravel 2024

Xem Phản hồi json xác thực tùy chỉnh của Laravel 2024

CẬP NHẬT ngày 10 tháng 6 năm 2019. Tôi đã đăng bài viết này trên kênh Slack của LaravelUK và David T đã cho tôi một số phản hồi có giá trị

Bạn có thể buộc Laravel luôn chỉ trả về JSON bằng cách chỉ định tiêu đề Chấp nhận.


Gần đây tôi đã sử dụng Xác thực yêu cầu biểu mẫu của Laravel thay vì sử dụng xác thực nội tuyến. Tôi thấy sẽ tốt hơn nhiều nếu tách mọi thứ thành các lớp riêng của chúng càng nhiều càng tốt, vì vậy tôi rất hài lòng khi điều này được đưa vào khung cốt lõi

Nếu bạn giống tôi và bạn không thể bỏ thói quen viết xác thực nội tuyến thì đừng lo lắng vì Jason McCreary tuyệt vời đã thêm một tính năng tuyệt vời vào Laravel Code Fixer Shift để chuyển đổi xác thực bộ điều khiển nội tuyến thành Yêu cầu biểu mẫu

Khi sử dụng Yêu cầu biểu mẫu với API, bạn sẽ nhận thấy rằng nếu bạn nhấn vào một tuyến API mà quá trình xác thực không thành công, nó sẽ đưa bạn đến chế độ xem 404

Giải pháp của tôi là tạo lớp FormRequest của riêng tôi mà tôi đặt trong không gian tên API gốc namespace AppHttpRequestsApi;

Tệp này chứa văn bản Unicode hai chiều có thể được diễn giải hoặc biên dịch khác với nội dung hiển thị bên dưới. Để xem lại, hãy mở tệp trong trình chỉnh sửa hiển thị các ký tự Unicode bị ẩn. Tìm hiểu thêm về các ký tự Unicode hai chiều

Hiển thị ký tự ẩn

không gian tênỨng dụngHttp** @return mảng*/trừu tượng** @return bool*/trừu tượng** @param IlluminateContractsValidationValidator $validator* @return void< . HTTP_UNPROCESSABLE_ENTITY));}}namespace AppHttpRequestsApi;use IlluminateHttpJsonResponse;use IlluminateContractsValidationValidator;use IlluminateValidationValidationException;use IlluminateHttpExceptionsHttpResponseException;use IlluminateFoundationHttpFormRequest as LaravelFormRequest;abstract class FormRequest extends LaravelFormRequest{/*** Get the validation rules that apply to the request.** @return array*/abstract public function rules();/*** Determine if the user is authorized to make this request.** @return bool*/abstract public function authorize();/*** Handle a failed validation attempt.** @param IlluminateContractsValidationValidator $validator* @return void** @throws IlluminateValidationValidationException*/protected function failedValidation(Validator $validator){$errors = (new ValidationException($validator))->errors();throw new HttpResponseException(response()->json([‘errors’ => $errors], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));}}

xem FormRequest thô. php được lưu trữ với ❤ ​​bởi GitHub

Vì vậy, SearchController của bạn sử dụng SearchRequest thay vì Request mặc định vẫn giữ nguyên

Chúng tôi chỉ cập nhật SearchRequest để sử dụng FormRequest tùy chỉnh chứ không phải mặc định và chúng tôi sẽ nhận được phản hồi JSON đẹp mắt khi có lỗi xác thực

Phần cuối cùng là thêm nó vào route của chúng ta tại routes/web. php cho phiên bản mới của ứng dụng laravel/Http/tuyến. php cho phiên bản cũ hơn

Route::post('login', '[email protected]');

 

Và nếu bạn gặp lỗi trong khi kiểm tra đăng nhập, có thể đó là do laravel của phần mềm trung gian csrf gây ra lỗi đó, chỉ cần tắt nó bằng cách cập nhật tệp app/Http/Kernel. php bằng cách xóa mã bên dưới

________số 8

 

Đây là kết quả ví dụ về những gì tôi đã làm trong postman bằng cách gửi tới url mà không có tên người dùng và mật khẩu

Các lớp yêu cầu tài nguyên của chúng tôi cho phép bạn xác thực JSON. Tài liệu API do khách hàng gửi dựa trên các quy tắc xác thực dành riêng cho ứng dụng của bạn. Bạn cũng có thể xác định quy tắc xác thực để xác định xem có thể xóa tài nguyên hay không

Đối với bất kỳ loại tài nguyên nào mà bạn cho phép tạo và/hoặc cập nhật (bao gồm cập nhật các mối quan hệ), bạn sẽ cần tạo một lớp yêu cầu tài nguyên. Để tạo yêu cầu tài nguyên, hãy sử dụng lệnh Artisan jsonapi:request

Điều này sẽ tạo ra lớp yêu cầu sau. namespace AppHttpRequestsApi;0

TIỀN BOA

Tùy chọn namespace AppHttpRequestsApi;1 không bắt buộc nếu bạn chỉ có một máy chủ

Phương pháp xác thực

Các đối tượng tài nguyên được xác thực bằng trình xác thực yêu cầu biểu mẫu của Laravel (mở cửa sổ mới). Nếu bất kỳ trường nào không tuân theo các quy tắc xác thực, phản hồi namespace AppHttpRequestsApi;2 sẽ được gửi. Thông báo lỗi của trình xác thực sẽ được chuyển thành JSON. Lỗi API, với thông báo lỗi quy tắc trong thành viên namespace AppHttpRequestsApi;3 của đối tượng lỗi. Mỗi lỗi cũng sẽ có một bộ con trỏ nguồn JSON xác định vị trí trong nội dung yêu cầu của lỗi xác thực

TIỀN BOA

Tại sao các quy tắc xác thực không được xác định trên các trường lược đồ, như tài nguyên Nova?

Đây là một câu hỏi hay. Mặc dù lúc đầu, các trường lược đồ của chúng tôi triển khai các quy tắc xác thực kiểu Nova (mở cửa sổ mới) có vẻ là một ý tưởng hay, nhưng chúng tôi không tin rằng đây là cách phù hợp để xác thực JSON. Trong khi Nova đang buộc xác thực của nó vào các trường nhập HTML, thì JSON của bạn. Các đối tượng tài nguyên API có thể chứa các cấu trúc phức tạp, chẳng hạn như mảng và các đối tượng JSON lồng nhau

Điều này làm cho việc đính kèm các quy tắc xác thực vào các trường cụ thể trở nên phức tạp hơn rất nhiều, do đó, chúng tôi đã chọn cách đơn giản hóa việc xác định quy tắc bằng cách sử dụng phương pháp yêu cầu biểu mẫu (mở cửa sổ mới) của Laravel

Dữ liệu xác thực

Tạo tài nguyên

Trình xác thực được cung cấp cùng với các trường tài nguyên (mở cửa sổ mới) do khách hàng gửi. Nói chung đây là namespace AppHttpRequestsApi;4, namespace AppHttpRequestsApi;5, namespace AppHttpRequestsApi;6 và namespace AppHttpRequestsApi;7 của tài nguyên. Để viết quy tắc xác thực dễ dàng hơn, chúng tôi đặt giá trị của các trường mối quan hệ thành thành viên namespace AppHttpRequestsApi;8 của mối quan hệ

Điều này được minh họa tốt nhất với một ví dụ. Đưa ra yêu cầu này

Trình xác thực của bạn sẽ được cung cấp mảng dữ liệu sau

Cập nhật tài nguyên

Khi cập nhật tài nguyên, JSON. đặc tả API nói

Nếu một yêu cầu không bao gồm tất cả các thuộc tính cho một tài nguyên, thì máy chủ PHẢI diễn giải các thuộc tính bị thiếu như thể chúng được bao gồm trong các giá trị hiện tại của chúng. Máy chủ KHÔNG ĐƯỢC diễn giải các thuộc tính bị thiếu dưới dạng giá trị null

Điều tương tự cũng áp dụng cho các mối quan hệ

Vì Laravel cung cấp các quy tắc xác thực cho phép bạn so sánh các giá trị đang được xác thực (e. g. một ngày phải là ____100 giá trị khác), chúng tôi lấy các giá trị trường hiện có của tài nguyên của bạn và hợp nhất các giá trị do khách hàng cung cấp ở trên cùng

Ví dụ: trong yêu cầu namespace AppHttpRequestsApi;01 sau đây, khách hàng chưa cung cấp giá trị cho các trường namespace AppHttpRequestsApi;02, namespace AppHttpRequestsApi;03 và namespace AppHttpRequestsApi;04

Để tuân thủ JSON. Đặc tả API, chúng tôi phải giả định rằng các trường bị thiếu là các giá trị hiện tại được lưu trữ trên tài nguyên. Do đó, chúng tôi lấy các giá trị tài nguyên hiện tại và sau đó hợp nhất các giá trị máy khách ở trên cùng. Trong ví dụ trên, điều này có nghĩa là trình xác thực nhận dữ liệu sau

Khi tính các giá trị hiện hành ta chỉ lấy giá trị của quan hệ namespace AppHttpRequestsApi;05 và namespace AppHttpRequestsApi;06. Điều này là do chúng ta sẽ cực kỳ kém hiệu quả khi đọc giá trị của mọi mối quan hệ. Ví dụ: tài nguyên namespace AppHttpRequestsApi;07 của chúng tôi có thể có hàng trăm namespace AppHttpRequestsApi;08, không cần thiết để xác thực

Nếu bạn cần các giá trị của một mối quan hệ không được bao gồm theo mặc định, hãy sử dụng phương pháp namespace AppHttpRequestsApi;09 trên trường trong lược đồ của bạn. Ví dụ: nếu chúng tôi muốn giá trị hiện tại của namespace AppHttpRequestsApi;10 được sử dụng

Nếu bạn muốn loại trừ mối quan hệ namespace AppHttpRequestsApi;05 hoặc namespace AppHttpRequestsApi;06 mà chúng tôi tự động đưa vào, hãy sử dụng phương pháp namespace AppHttpRequestsApi;13 trên trường trong lược đồ của bạn. Ví dụ: nếu chúng tôi muốn loại trừ mối quan hệ namespace AppHttpRequestsApi;04

Tùy chỉnh các giá trị hiện có

Nếu bạn muốn điều chỉnh bất kỳ giá trị hiện tại nào trước khi hợp nhất các giá trị do máy khách cung cấp, hãy triển khai phương thức namespace AppHttpRequestsApi;15 trên lớp yêu cầu của bạn. Phương thức này nhận model và JSON. Biểu diễn tài nguyên API làm đối số của nó

Bạn phải trả về mảng mà bạn muốn trình xác thực sử dụng. Nếu bạn trả về namespace AppHttpRequestsApi;16, thì trình xác thực sẽ cho rằng bạn không sửa đổi tài nguyên và sẽ sử dụng tài nguyên đó như hiện tại

Sửa đổi mối quan hệ

JSON. Đặc tả API cung cấp các điểm cuối mối quan hệ để sửa đổi mối quan hệ tài nguyên. Các mối quan hệ với một và nhiều có thể được thay thế bằng yêu cầu namespace AppHttpRequestsApi;01. Đối với mối quan hệ nhiều người, tài nguyên có thể được đính kèm thông qua yêu cầu namespace AppHttpRequestsApi;18 hoặc tách ra bằng yêu cầu namespace AppHttpRequestsApi;19

Đưa ra yêu cầu này

Trình xác thực của bạn sẽ được cung cấp mảng dữ liệu sau

TIỀN BOA

Trong trường hợp này, chúng tôi lọc các quy tắc tài nguyên được trả về từ phương thức namespace AppHttpRequestsApi;20 của bạn để chỉ bao gồm các quy tắc có khóa bắt đầu bằng namespace AppHttpRequestsApi;10

Quy tắc xác thực

Xác định quy tắc tài nguyên

Để xác thực dữ liệu này, bạn xác định các quy tắc xác thực trong phương thức namespace AppHttpRequestsApi;20 của lớp yêu cầu tài nguyên của bạn. Chúng tôi sử dụng dữ liệu đã được xác thực để điền vào các mô hình, vì vậy bạn phải xác thực mọi thuộc tính và mối quan hệ mà bạn muốn điền vào mô hình của mình

Ví dụ: quy tắc namespace AppHttpRequestsApi;23 của chúng tôi có thể trông như thế này

TIỀN BOA

Bạn có thể nhập gợi ý bất kỳ phụ thuộc nào bạn cần trong chữ ký của phương thức quy tắc. Chúng sẽ tự động được giải quyết thông qua Laravel service container

Quy tắc quan hệ

Trong ví dụ trên, bạn sẽ nhận thấy rằng quy tắc namespace AppHttpRequestsApi;24 không được sử dụng để xác thực cho các mối quan hệ namespace AppHttpRequestsApi;04 hoặc namespace AppHttpRequestsApi;10. Điều này là do gói tuân thủ JSON. Thông số API và xác thực tất cả các mã định danh tài nguyên trong các mối quan hệ để kiểm tra xem chúng có tồn tại không. Nếu không tồn tại, yêu cầu sẽ bị từ chối khi tài liệu được phân tích cú pháp để tuân thủ JSON. đặc tả API

Thay vào đó, đối với các mối quan hệ, tất cả những gì chúng ta cần làm là cung cấp các quy tắc namespace AppHttpRequestsApi;27 và namespace AppHttpRequestsApi;28. Chúng sử dụng lược đồ cho loại tài nguyên yêu cầu để đảm bảo rằng các mối quan hệ chứa đúng loại tài nguyên

Hãy nhớ rằng bạn phải xác thực mọi mối quan hệ mà bạn muốn điền vào mô hình của mình

ID do khách hàng tạo

Ví dụ: nếu tài nguyên của bạn chấp nhận ID do khách hàng tạo, bạn phải thêm các quy tắc xác thực cho trường namespace AppHttpRequestsApi;5

Quy tắc ID ứng dụng khách đảm bảo rằng ID được cung cấp khớp với mẫu mã định danh được đặt trong giản đồ của bạn. Do đó, không cần sử dụng quy tắc xác thực namespace AppHttpRequestsApi;30 của Laravel

Nếu bạn luôn mong đợi một khách hàng cung cấp một namespace AppHttpRequestsApi;5, hãy sử dụng quy tắc namespace AppHttpRequestsApi;32 của Laravel như trong ví dụ trên. Nếu máy chủ của bạn xử lý ứng dụng khách không cung cấp ID (ví dụ: nếu bạn tự động tạo UUID ngẫu nhiên nếu ID không được cung cấp), thì hãy sử dụng quy tắc namespace AppHttpRequestsApi;33 thay vì namespace AppHttpRequestsApi;32

TIỀN BOA

Như trong ví dụ, không cần sử dụng quy tắc namespace AppHttpRequestsApi;24 để kiểm tra xem ID do khách hàng tạo đã tồn tại chưa. Điều này là do JSON. Đặc tả API xác định rằng các máy chủ sẽ gửi phản hồi namespace AppHttpRequestsApi;36 khi tạo tài nguyên có ID do khách hàng tạo đã tồn tại. Do đó, chúng tôi từ chối trường hợp này khi kiểm tra xem tài liệu có tuân thủ đặc điểm kỹ thuật hay không

Truy cập mô hình

Nếu bạn cần truy cập mô hình khi xác định các quy tắc xác thực của mình, hãy sử dụng phương pháp namespace AppHttpRequestsApi;37. Vì các quy tắc của bạn được sử dụng cho cả yêu cầu tạo và cập nhật, nên phương thức này sẽ trả về namespace AppHttpRequestsApi;16 cho yêu cầu tạo và mô hình cho yêu cầu cập nhật

Ví dụ

Truy cập dữ liệu xác thực

Nếu bạn cần truy cập dữ liệu xác thực trong phương thức namespace AppHttpRequestsApi;20 của mình, hãy gọi phương thức namespace AppHttpRequestsApi;40

Thêm Sau Móc

Nếu bạn muốn thêm hook “after” vào yêu cầu biểu mẫu, bạn có thể sử dụng phương thức namespace AppHttpRequestsApi;41. Phương thức này nhận được trình xác thực được xây dựng đầy đủ, cho phép bạn gọi bất kỳ phương thức nào của nó trước khi các quy tắc xác thực thực sự được đánh giá

CẢNH BÁO

Khi thêm after hook, bạn sẽ cần sử dụng các phương thức trợ giúp của yêu cầu để xác định loại yêu cầu đó là gì. Ví dụ trên kiểm tra xem yêu cầu đang tạo hay cập nhật tài nguyên

Bạn cần làm điều này vì phương thức namespace AppHttpRequestsApi;41 sẽ được gọi cho tất cả các loại yêu cầu khác nhau được mô tả trong chương này, tôi. e. tạo/cập nhật tài nguyên, sửa đổi mối quan hệ và xóa tài nguyên

Xác thực có điều kiện phức tạp

Phương thức namespace AppHttpRequestsApi;41 cũng có thể được sử dụng để thêm xác thực có điều kiện phức tạp (mở cửa sổ mới), sử dụng phương thức namespace AppHttpRequestsApi;44 trên trình xác thực. Ví dụ

CẢNH BÁO

Khi thêm xác thực có điều kiện, bạn sẽ cần sử dụng các phương thức trợ giúp của yêu cầu để xác định loại yêu cầu đó là gì. Ví dụ trên kiểm tra xem yêu cầu có đang tạo hoặc cập nhật tài nguyên hay không trước khi áp dụng các quy tắc xác thực có điều kiện

Bạn cần làm điều này vì phương thức namespace AppHttpRequestsApi;41 sẽ được gọi cho tất cả các loại yêu cầu khác nhau được mô tả trong chương này, tôi. e. tạo/cập nhật tài nguyên, sửa đổi mối quan hệ và xóa tài nguyên

Xác thực Booleans

Trong JSON, một boolean luôn là namespace AppHttpRequestsApi;46 hoặc namespace AppHttpRequestsApi;47. Tuy nhiên, quy tắc xác thực namespace AppHttpRequestsApi;48 của Laravel được gõ lỏng lẻo – tôi. e. nó sẽ chấp nhận namespace AppHttpRequestsApi;46, namespace AppHttpRequestsApi;47, namespace AppHttpRequestsApi;51, namespace AppHttpRequestsApi;52, namespace AppHttpRequestsApi;53 và namespace AppHttpRequestsApi;54 là các giá trị hợp lệ

Đối với JSON, tốt hơn là nhập đúng các giá trị boolean. Sử dụng quy tắc namespace AppHttpRequestsApi;48 của chúng tôi để thực thi chỉ chấp nhận namespace AppHttpRequestsApi;46 và namespace AppHttpRequestsApi;47 làm giá trị hợp lệ

JSON. API khuyến nghị sử dụng định dạng ISO 8601 cho chuỗi ngày và giờ trong JSON (mở cửa sổ mới). Điều này không thể xác thực bằng cách sử dụng quy tắc xác thực namespace AppHttpRequestsApi;58 của Laravel, bởi vì W3C tuyên bố rằng một số định dạng ngày và giờ là hợp lệ. Ví dụ: tất cả những điều sau đây đều hợp lệ

  • namespace AppHttpRequestsApi;59
  • namespace AppHttpRequestsApi;60
  • namespace AppHttpRequestsApi;61
  • namespace AppHttpRequestsApi;62
  • namespace AppHttpRequestsApi;63
  • namespace AppHttpRequestsApi;64
  • namespace AppHttpRequestsApi;65
  • namespace AppHttpRequestsApi;66

Để chấp nhận bất kỳ định dạng hợp lệ nào cho trường ngày tháng, gói này cung cấp một đối tượng quy tắc. Điều này có thể được sử dụng như sau

Xác thực số

Các quy tắc namespace AppHttpRequestsApi;67 và namespace AppHttpRequestsApi;68 của Laravel được gõ lỏng lẻo – nghĩa là chúng sẽ chấp nhận các số nguyên, số float và các biểu diễn chuỗi của các số. Tuy nhiên, JSON có thể được gõ đúng – tôi. e. khi giải mã JSON, chúng ta có thể mong đợi một giá trị là số nguyên PHP hoặc số float

Nếu bạn có một trường có thể chấp nhận số nguyên hoặc số float, hãy sử dụng quy tắc xác thực namespace AppHttpRequestsApi;69 của chúng tôi để đảm bảo trường được nhập đúng cách

Để chỉ chấp nhận số nguyên, hãy sử dụng quy tắc namespace AppHttpRequestsApi;67

Quy tắc bắt buộc

Sử dụng quy tắc namespace AppHttpRequestsApi;32 có thể dẫn đến JSON. Đối tượng lỗi API có con trỏ JSON tới namespace AppHttpRequestsApi;72 hoặc trường thực tế được yêu cầu, e. g. namespace AppHttpRequestsApi;73. Điều này sẽ thay đổi tùy theo việc khách hàng bỏ qua trường hay gửi một giá trị trống cho trường

Nếu bạn luôn muốn con trỏ liên quan đến trường thực, e. g. namespace AppHttpRequestsApi;73, đảm bảo khách hàng của bạn luôn gửi giá trị cho trường, ngay cả khi giá trị đó trống (e. g. namespace AppHttpRequestsApi;16)

Để minh họa điều này, đây là hai yêu cầu không tuân theo quy tắc namespace AppHttpRequestsApi;32 và kết quả là phản hồi lỗi

Trường bị bỏ qua

Trong trường hợp này, không thể sử dụng một con trỏ JSON của namespace AppHttpRequestsApi;73 vì nó sẽ trỏ đến một trường không tồn tại trong JSON yêu cầu. Thay vào đó, con trỏ namespace AppHttpRequestsApi;72 cho biết lỗi là do đối tượng tài nguyên được giữ trong thành viên namespace AppHttpRequestsApi;8 cấp cao nhất

Trường trống

Trong trường hợp này, con trỏ có thể là namespace AppHttpRequestsApi;73 vì trường thực sự tồn tại trong JSON yêu cầu

Quy tắc đã xác nhận

Quy tắc namespace AppHttpRequestsApi;81 của Laravel hy vọng sẽ có một trường có cùng tên và namespace AppHttpRequestsApi;82 ở cuối. Ví dụ: nếu sử dụng quy tắc namespace AppHttpRequestsApi;81 trên trường namespace AppHttpRequestsApi;84, quy tắc đó dự kiến ​​sẽ có trường namespace AppHttpRequestsApi;85

Nếu bạn không sử dụng dấu gạch dưới trong tên trường của mình, điều này có nghĩa là quy tắc namespace AppHttpRequestsApi;81 sẽ không hoạt động. Ví dụ: nếu sử dụng trường hợp lạc đà, trường bổ sung của bạn sẽ được gọi là namespace AppHttpRequestsApi;87. Thật không may, Laravel không cung cấp cách tùy chỉnh tên trường xác nhận dự kiến

Trong trường hợp này, bạn sẽ cần sử dụng các quy tắc sau để namespace AppHttpRequestsApi;87 hoạt động

Hãy nhớ lưu ý hướng dẫn ở trên về các yêu cầu cập nhật, trong đó máy chủ phải giả định rằng các giá trị bị thiếu có giá trị hiện tại. Đối với các trường hợp mật khẩu, trình xác thực của bạn sẽ không có quyền truy cập vào giá trị hiện tại

Do đó, bạn sẽ cần điều chỉnh việc sử dụng quy tắc namespace AppHttpRequestsApi;32 và namespace AppHttpRequestsApi;000 để chỉ thêm chúng nếu khách hàng đã gửi mật khẩu. Ví dụ

Tùy chỉnh thông báo lỗi

Bạn có thể tùy chỉnh các thông báo lỗi được sử dụng bởi yêu cầu biểu mẫu bằng cách ghi đè phương thức namespace AppHttpRequestsApi;001. Phương thức này sẽ trả về một mảng các cặp thuộc tính/quy tắc và các thông báo lỗi tương ứng của chúng

Tùy chỉnh các thuộc tính xác thực

Nếu bạn muốn thay thế phần namespace AppHttpRequestsApi;002 của thông báo xác thực bằng tên thuộc tính tùy chỉnh, bạn có thể chỉ định tên tùy chỉnh bằng cách ghi đè phương thức namespace AppHttpRequestsApi;6. Phương thức này sẽ trả về một mảng các cặp thuộc tính/tên

Các yêu cầu biểu mẫu của Laravel cho phép bạn truy xuất dữ liệu đã được xác thực bằng phương thức namespace AppHttpRequestsApi;004. Trên lớp yêu cầu của chúng tôi, điều này trả về dữ liệu đã được xác thực cho yêu cầu tạo hoặc cập nhật tài nguyên

Đối với các yêu cầu về mối quan hệ, bạn nên sử dụng phương thức namespace AppHttpRequestsApi;005 để truy xuất giá trị đã xác thực

Xóa tài nguyên

Có thể thêm quy tắc xác thực để xóa tài nguyên. Điều này hữu ích nếu bạn muốn ngăn việc xóa tài nguyên trong một số trường hợp nhất định. Xác nhận này là tùy chọn. Nếu lớp trình xác thực của bạn không xác định bất kỳ quy tắc xóa nào, yêu cầu xóa sẽ được cho phép

Ví dụ: nếu bạn không muốn cho phép ứng dụng khách API xóa namespace AppHttpRequestsApi;07 có namespace AppHttpRequestsApi;08

Xóa dữ liệu xác thực

Theo mặc định, chúng tôi chuyển các giá trị trường hiện tại của tài nguyên tới trình xác thực xóa. Đây là quy trình tương tự như được mô tả ở trên để cập nhật tài nguyên, mặc dù chúng tôi cho phép bạn thêm dữ liệu cụ thể cho yêu cầu xóa

Để thêm dữ liệu cho xác thực xóa, hãy sử dụng phương thức namespace AppHttpRequestsApi;008 để trả về một mảng giá trị. Điều này sau đó có sẵn để xác thực bằng cách sử dụng các quy tắc cho giá trị namespace AppHttpRequestsApi;009

Trong ví dụ trên, phương thức namespace AppHttpRequestsApi;008 được sử dụng để thêm một giá trị boolean để chỉ ra rằng tài nguyên namespace AppHttpRequestsApi;07 không có nhận xét nào. Điều này sau đó được xác thực bằng đường dẫn namespace AppHttpRequestsApi;012

Quy tắc xác thực xóa

Xác định các quy tắc xác thực xóa trong phương thức namespace AppHttpRequestsApi;013 của trình xác thực của bạn, như trong ví dụ trên

Như với phương thức namespace AppHttpRequestsApi;20, bạn có thể nhập gợi ý bất kỳ phụ thuộc nào bạn cần trong chữ ký của phương thức quy tắc. Chúng sẽ tự động được giải quyết thông qua Laravel service container

Bạn cũng có thể truy cập mô hình đang bị xóa thông qua phương pháp namespace AppHttpRequestsApi;37

Xóa thông báo lỗi

Để thêm bất kỳ thông báo lỗi tùy chỉnh nào cho các quy tắc tài nguyên xóa của bạn, hãy triển khai phương thức namespace AppHttpRequestsApi;016. Điều này sẽ trả về một mảng thông báo tùy chỉnh, sẽ được hợp nhất với thông báo lỗi tùy chỉnh tài nguyên của bạn

Xóa tên thuộc tính

Để thêm bất kỳ tên thuộc tính tùy chỉnh nào cho quy tắc tài nguyên xóa của bạn, hãy triển khai phương thức namespace AppHttpRequestsApi;017. Điều này sẽ trả về một mảng các thuộc tính tùy chỉnh, sẽ được hợp nhất với các thuộc tính tùy chỉnh của tài nguyên của bạn

Phương pháp trợ giúp

Lớp yêu cầu tài nguyên của chúng tôi có một số phương thức trợ giúp, để cho phép bạn xác định loại yêu cầu mà lớp đang xử lý. Các phương pháp có sẵn là

TIỀN BOA

Chúng tôi khuyên bạn nên sử dụng các phương pháp này thay vì sử dụng phương pháp namespace AppHttpRequestsApi;018, vì động từ HTTP có thể được sử dụng cho cả yêu cầu tài nguyên và mối quan hệ. e. g. namespace AppHttpRequestsApi;18 được sử dụng cho cả việc tạo tài nguyên và thay thế nội dung của một mối quan hệ

đang tạo

Trả về namespace AppHttpRequestsApi;46 nếu yêu cầu sẽ thay thế nội dung của mối quan hệ trên một tài nguyên hiện có. Ví dụ

Làm cách nào để tạo quy tắc xác thực tùy chỉnh trong Laravel?

Mục lục .
Bắt đầu xác thực
1. 1. Xác định các tuyến đường khác nhau
1. 2. Tạo bộ điều khiển mới
1. 3. Mã hóa logic xác thực
1. 4. Thuộc tính lồng nhau
Xác thực yêu cầu biểu mẫu
2. 1. Tạo và triển khai các yêu cầu biểu mẫu
2. 2. Các móc sau để hình thành yêu cầu

Làm cách nào để tùy chỉnh thông báo lỗi xác thực trong Laravel?

Để khắc phục điều này, chúng ta có thể tùy chỉnh các thông báo lỗi bằng cách chuyển một mảng thứ hai làm đối số, chứa các khóa được tạo bằng cách sử dụng tên của tham số, dấu chấm và sau đó là tên của . – the value will be the error message we want to display.

Làm cách nào để thay đổi thông báo xác thực trong Laravel?

sử dụng Ứng dụngHttpRequestsCustomRequest;. phản hồi chức năng công khai (CustomRequest $request) { $validation = Trình xác thực. make($request->all(), [ ‘reponse’ => ‘required’, ]);

Làm cách nào để trả về lỗi xác thực trong Laravel API?

Khi bạn gửi dữ liệu tới API Laravel của mình, có thể bạn không muốn các lỗi xác thực được trả về dưới dạng HTML. Nếu điều này xảy ra với bạn, bạn có thể yêu cầu Laravel trả lại các lỗi xác thực dưới dạng JSON bằng cách đặt tiêu đề HTTP ‘Chấp nhận. application/json’ trong yêu cầu của bạn .

Bạn đang tìm hiểu bài viết Phản hồi json xác thực tùy chỉnh của Laravel 2024


HỆ THỐNG CỬA HÀNG TRÙM SỈ QUẢNG CHÂU

Điện thoại: 092.484.9483

Zalo: 092.484.9483

Facebookhttps://facebook.com/giatlathuhuongcom/

WebsiteTrumsiquangchau.com

Địa chỉ: Ngõ 346 Nam Dư, Trần Phú, Hoàng Mai, Hà Nội.

0/5 (0 Reviews)