Bản thân Laravel đã đi kèm với các tuyến API sẵn có. Trong bài viết hôm nay, tôi sẽ trình bày một số cách sử dụng cơ bản mà không cần xác thực
Trong giai đoạn sau, chúng tôi sẽ xem xét việc bảo mật các tuyến API của mình
Mục tiêu của ngày hôm nay là gọi công khai điểm cuối sách và truy xuất tất cả sách của chúng tôi. Chúng tôi cũng muốn thêm một cuốn sách
Hiện tại, điều này sẽ không nằm sau lớp xác thực
Đăng ký các tuyến API
Trong Laravel, chúng tôi có thể đăng ký các tuyến API của mình bên trong tệp
php artisan make:controller BookController --resource --model=Book
0. Tất cả các tuyến đường ở đây sẽ có tiền tố là php artisan make:controller BookController --resource --model=Book
1Chúng tôi có thể thêm tất cả các tuyến đường của mình theo cách thủ công như thế này
Route::get['books', 'BookController@index'];
Route::post['books', 'BookController@store'];
Tuy nhiên, Laravel đi kèm với một kỹ thuật tiện dụng khác cho phép chúng ta tạo bộ điều khiển tài nguyên
Và phần hay nhất, chúng ta thậm chí có thể tạo ra nó
php artisan make:controller BookController --resource --model=Book
Điều này sẽ tạo một bộ điều khiển tài nguyên cho mô hình sách của chúng tôi. Bộ điều khiển tài nguyên đi kèm với các tuyến sau đây
MethodURLActionRoute nameGETphp artisan make:controller BookController --resource --model=Book
2indexbooks. chỉ mụcPOSTphp artisan make:controller BookController --resource --model=Book
2cửa hàng sách. cửa hàngGET____0_______4showbooks. showPUT/PATCHphp artisan make:controller BookController --resource --model=Book
4updatebooks. cập nhậtXÓA_______0_______4hủy sách. hủy hoạiVà chúng tôi có thể đăng ký tất cả các tuyến đường này trong tệp tuyến đường API của mình bằng cách chỉ bao gồm một dòng này
Route::resource['books', BookController::class];
Trả lại dữ liệu thu thập trong bộ điều khiển API của chúng tôi
Bây giờ các điểm cuối của chúng tôi đang hoạt động, chúng tôi cần điền vào chúng để chúng thực sự trả về dữ liệu
Trước tiên hãy bắt đầu bằng cách tạo một tài nguyên. Tài nguyên là một cách tuyệt vời để nói chuyện giữa mô hình của chúng tôi và phản hồi API
php artisan make:resource BookResource
Khi đã được tạo, hãy chuyển đến
php artisan make:controller BookController --resource --model=Book
7 và thay đổi hàm chỉ mục thành như saupublic function index[]
{
$books = Book::paginate[];
return BookResource::collection[$books];
}
Hãy xem nó có hoạt động trong Insomnia/Postman không
Và nó hoạt động. Bây giờ chúng ta có thể điền vào phần còn lại của các hành động
Chức năng hiển thị sẽ chỉ trả về một cuốn sách
/**
* Display the specified resource.
*
* @param \App\Models\Book $book
* @return \Illuminate\Http\Response
*/
public function show[Book $book]
{
return new BookResource[$book];
}
Đối với việc tạo một cuốn sách mới, chúng ta có thể sử dụng như sau
public function store[Request $request]
{
$validated = $request->validate[[
'title' => 'required|string|max:255',
'year' => 'required|integer'
]];
$book = Book::create[$validated];
return new BookResource[$book];
}
Trình xác thực là một chức năng cực hay của Laravel có thể thực hiện xác thực khá rộng rãi
Hãy xem điều gì xảy ra khi chúng ta sử dụng sai yêu cầu
mát phải. Tuy nhiên, chúng tôi vẫn gặp lỗi nếu chúng tôi điền ngay bây giờ
"thông điệp". "Thêm [tiêu đề] vào thuộc tính có thể điền để cho phép gán hàng loạt trên [Ứng dụng\Mô hình\Sách]. ",
Đó là bởi vì tiêu đề và năm không thể điền vào mô hình của chúng tôi. Mở tệp mô hình Sách và thêm vào như sau
protected $fillable = ['title', 'year'];
Nếu bây giờ chúng tôi đăng lại, chúng tôi nên thêm một cuốn sách và lấy cuốn sách đó làm phản hồi của chúng tôi
Với chức năng tạo này, chúng ta có thể tạo chức năng cập nhật một cách đơn giản. Điều đó sẽ cập nhật một cuốn sách dựa trên ID của nó
public function update[Request $request, Book $book]
{
$validated = $request->validate[[
'title' => 'required|string|max:255',
'year' => 'required|integer'
]];
$book->update[$validated];
return new BookResource[$book];
}
Chức năng cuối cùng chúng ta cần là chức năng xóa sách. Chúng tôi cũng có thể xóa một cuốn sách dựa trên ID của nó
public function destroy[Book $book]
{
$book->delete[];
return response[null, Response::HTTP_NO_CONTENT];
}
Và đó là nó. Bây giờ chúng ta có bộ điều khiển API cơ bản. Tích hợp sẵn không mất thời gian và hầu như không thực hiện bất kỳ công cụ tùy chỉnh khó khăn nào
Cảm ơn bạn đã đọc, và chúng ta hãy kết nối
Cảm ơn bạn đã đọc blog của tôi. Vui lòng đăng ký nhận bản tin email của tôi và kết nối trên Facebook hoặc Twitter