cũng có thể nói ngulặng lí REST với cấu tạo tài liệu RESTful được nghe biết thoáng rộng vào giới thiết kế website nói tầm thường với lập trình vận dụng dành riêng.

Bạn đang xem: Restful là gì

Có thể nói phiên bản thân REST không hẳn là 1 trong loại technology. Nó là cách thức tạo thành API với nguyên tắc tổ chức triển khai nhất định. Những nguyên lý này nhằm trả lời lập trình sẵn viên chế tác môi trường xử trí API request được toàn diện.

Để hiểu rõ hơn về RESTful API ta vẫn đi lần lượt giải thích các tư tưởng API, REST giỏi RESTful.


*
*
*
*

REST vận động đa số phụ thuộc giao thức HTTP. Các vận động cơ bạn dạng nêu trên đang sử dụng mọi cách tiến hành HTTP riêng biệt.

GET (SELECT): Trả về một Resource hoặc một danh sách Resource.POST (CREATE): Tạo bắt đầu một Resource.PUT (UPDATE): Cập nhật thông báo mang đến Resource.DELETE (DELETE): Xoá một Resource.

Những cách tiến hành tuyệt vận động này hay được call là CRUD khớp ứng cùng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa.

Hiện tại phần lớn lập trình viên viết RESTful API giờ đây những lựa chọn JSON là format bằng lòng mà lại cũng có không ít người lựa chọn XML có tác dụng format, nói phổ biến cần sử dụng nuốm như thế nào cũng khá được miễn luôn thể và nhanh.

Authentication cùng dữ liệu trả về

RESTful API ko áp dụng session với cookie, nó áp dụng một access_token cùng với mỗi request. Dữ liệu trả về thông thường sẽ có kết cấu như sau:

"data" : "id": "1", "name": "metalhall.net"

Status code

Lúc họ request một API nào này thường thì sẽ có được vài ba status code nhằm phân biệt sau:

200 OK – Trả về thành công mang đến mọi phương thức GET, PUT, PATCH hoặc DELETE.201 Created – Trả về lúc một Resouce vừa mới được tạo nên thành công.204 No Content – Trả về lúc Resource xoá thành công xuất sắc.304 Not Modified – Client hoàn toàn có thể sử dụng dữ liệu cache.400 Bad Request – Request không hợp lệ401 Unauthorized – Request cần phải có auth.403 Forbidden – bị từ chối không được cho phép.404 Not Found – Không search thấy resource từ URI405 Method Not Allowed – Phương thức ko cho phép với user bây giờ.410 Gone – Resource không thể tồn tại, Version cũ đã không còn hỗ trợ.415 Unsupported Media Type – Không hỗ trợ đẳng cấp Resource này.422 Unprocessable Entity – Dữ liệu ko được xác thực429 Too Many Requests – Request bị phủ nhận bởi bị giới hạn

Nên sử dụng Version

Luôn thực hiện version để khi bạn đề nghị upgrade API nhưng mà vẫn hỗ trợ các API cũ.

Xây dựng API với Laravel

Lấy vấn đề xây dừng api bên trên Laravel để làm ví dụ, trước khi bước vào ta tổng quan liêu về Http Request.

HTTP Request

HTTPhường request bao gồm toàn bộ 9 một số loại method , 2 các loại được thực hiện thịnh hành nhất là GET với POST

GET: được áp dụng để đưa lên tiếng trường đoản cú VPS theo URI đã cung cấp.HEAD: kiểu như cùng với GET tuy thế response trả về không tồn tại body toàn thân, chỉ bao gồm header.POST: gửi thông tin cho tới sever thông qua những biểu mẫu http.PUT: ghi đè toàn bộ công bố của đối tượng người dùng với hầu hết gì được trình lên.PATCH: ghi đè các thông tin được biến đổi của đối tượng người tiêu dùng.DELETE: xóa tài nguyên trên server.CONNECT: tùy chỉnh thiết lập một liên kết tới server theo URI.OPTIONS: diễn đạt các tùy chọn giao tiếp mang đến resource.TRACE: triển khai một bài xích chạy thử loop – back theo đường truyền cho resource.

Xem thêm: Tìm Hiểu Về In Addition To Nghĩa Là Gì Trong Tiếng Anh, Cấu Trúc Và Cách Dùng

RESTful Route

Viết Api thì vẫn knhì báo router vào file routes/api.php thế vày thực hiện file routes/website.php. Các setting mang mang đến file api.php vào laravel:

Url: phần nhiều route được khai báo trong tệp tin này mang định có prefix url là api (ví dụ: metalhall.net/api/products)Middleware: mặc định sẽ được gán Middleware Group là api, vào tệp tin app/Http/Kernel sẽ thấy 2 middleware thuộc Middleware Group: api là throttle (số lượng giới hạn request / time) cùng bindings (model binding).

cũng có thể thiết lập quý giá khoác định này trong method mapApiRoutes vào file app/Providers/RouteServiceProvider.php

Tạo các route để thực hiện những thao tác làm việc như CRUD (Create, Read, Update, Delete):

// Lấy danh mục sản phẩmRoute::get("products", "ApiProductController
index")->name("products.index");// Lấy detail sản phẩm theo idRoute::get("products/id", "ApiProductController
store")->name("products.store");// Update info sản phẩm theo id# Sử dụng put nếu như update toàn bộ những fieldRoute::put("products/id", "ApiProductController
update")->name("products.update");# Sử dụng patch trường hợp update 1 vài fieldRoute::patch("products/id", "ApiProductController
update")->name("products.update");// Xóa thành phầm theo idRoute::delete("products/id", "ApiProductController
destroy")->name("products.destroy");Mặc định route đã làm được gán middleware bindings, nếu như muốn thực hiện Mã Sản Phẩm binding vào controller thì bọn họ sửa lại tsi mê số trong route nhỏng sau:

Route::get("products/product", "ApiProductController
destroy")->name("products.destroy");Ngoài ra trong laravel cũng hỗ trợ họ 1 cách khai báo ngắn thêm gọn hơn:

//Nếu không thích áp dụng toàn thể method vào apiResource mọi tín đồ có thể chỉ định và hướng dẫn sử dụng 1 vài method bởi hàm onlyRoute::apiResource("products", "ApiProductController")->only(<"index", "show">);//Hoặc nếu muốn loại trừ đi 1 số ít method ko cần sử dụng thì hoàn toàn có thể thực hiện hàm exceptRoute::apiResource("products", "ApiProductController")->except(<"show", "update">);

Resource Controllers

Tương ứng cùng với các Route RESTful vẫn knhị báo sống bên trên, đặc trưng nếu như dùng method apiResource thì laravel cũng cung cấp các method up load tương xứng vào controller.

Để tạo thành Resource Controllers họ chạy lệnh sau

php artisan make:controller Api/ProductController -api

File ProductController tạo thành sẽ như sauNgoài ra nếu còn muốn sử dụng mã sản phẩm binding khi tạo thành Resource Controllers thì cần sử dụng lệnh bên dưới

php artisan make:controller Api/ProductController --api --model=Models/Product

File ProductController tạo nên sẽ nhỏng sau, chúng ta chú ý tmê say số của các method show, update, destroy đang biến hóa 1 chút.

Demo 1 đoạn code dễ dàng và đơn giản trong controller kết hợp với mã sản phẩm binding cùng route apiResource khi chế tạo API:

all()); } /** * Display the specified resource. * *
return Product */ public function show(Product $product) return $product; /** * Update the specified resource in storage. * *
return bool */ public function update(Request $request, Product $product) return $product->update($request->all()); /** * Remove sầu the specified resource from storage. * *
throws Exception */ public function destroy(Product $product) $product->delete(); }Mặc định khi áp dụng route apiResource thì dữ liệu trả về đã tự động hóa được chuyển sang vẻ bên ngoài JSON và sẽ có được status tương ứng bắt buộc chỉ cần return dữ liệu ra là được.

Còn nếu như muốn tùy biến chuyển status trả về thì hoàn toàn có thể xem thêm giải pháp phía dưới tất cả sử dụng class IlluminateHttpResponse để mang status chũm vày fix quý hiếm vào ví dụ như HTTP_OK khớp ứng đã là 200

json($products, Response::HTTP_OK); }}Eloquent ResourcesLúc desgin API, bạn cũng có thể bắt buộc transkhung dữ liệu từ bỏ controller trước lúc trả về cho những người cần sử dụng ứng dụng của doanh nghiệp, laravel cũng đã hỗ trợ điều đó cùng với Eloquent Resources

Để tạo ra 1 class đổi khác chúng ta chạy lệnh sau

php artisan make:resource Product

File app/Http/Resources/Product.php sẽ sở hữu ngôn từ nlỗi sau

Mình vẫn tùy chỉnh tài liệu trả về là chỉ gồm title với price

$this->title, "price" => $this->price, >; }}

Ở controller thì mình sẽ sửa lại nlỗi sau

all()); return new ProductResource($product); } /** * Display the specified resource. * *
return Product */ public function show(Product $product) return new ProductResource($product); /** * Update the specified resource in storage. * *
return bool */ public function update(Request $request, Product $product) return $product->update($request->all()); /** * Remove the specified resource from storage. * *
throws Exception */ public function destroy(Product $product) $product->delete(); }Ngoài giới hạn dữ liệu trả về nhỏng title hay price, laravel cũng cung cấp rất nhiều vật dụng nlỗi thêm relationships, data …, rất nhiều fan rất có thể bài viết liên quan docs trên Laravel.

Authorization

Bây Giờ bao gồm 3 phương pháp Authorize chính:

HTTPhường BasicJSON Web Token (JWT)OAuth2

Tùy trực thuộc vào service của bạn, mà hãy chọn loại Authorize tất cả cường độ cân xứng, cố gắng giữ lại nó càng đơn giản dễ dàng càng giỏi.

CORS Policy

Viết API thì cũng cần chăm chú về CORS là gì?

API Document

Ai cũng biết vấn đề viết API docs là quan trọng, mặc dù để có một API docs hoàn hảo cũng tiêu hao khá nhiều thời gian. Nhất là trong lúc dự án công trình nhanh chóng thì hồ hết fan thường xuyên chỉ nhằm API docs ở tầm mức vô cùng cơ bản. Tđam mê khảo thêm cách viết API Document.

API document là một trong những phần tương tự nhỏng Unit Test vậy – đem nthêm để nuôi nhiều năm.

Xem thêm: Sau Of Là Gì, Nghĩa Của Từ Sau, Sau Giới Từ Of Là Gì

Nếu không được âu yếm kỹ, thì tới lúc maintain hoặc chuyển đổi spec thì hậu quả sẽ tương đối thảm khốc, dưới đây là một số xem xét cơ hội viết docs:

Mô tả đầy đủ về params request: gồm đông đảo params nào, datatype, require tốt optional.Nên chỉ dẫn các ví dụ về HTTP.. requests cùng responses với data chuẩn.Cập nhật Docs liên tục, để gần kề độc nhất vô nhị với API tất cả bất kể biến đổi gì.Format, cú pháp rất cần được đồng điệu, biểu hiện rõ ràng, đúng đắn.

Chuyên mục: GIÁO DỤC
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *