Api restful là gì

     

Có thể nói nguyên lí REST và kết cấu dữ liệu RESTful được biết đến rộng thoải mái trong giới thiết kế web nói phổ biến và lập trình ứng dụng nói riêng.

Bạn đang xem: Api restful là gì

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

Để làm rõ hơn về RESTful API ta đang đi lần lượt giải thích các có mang API, REST tuyệt RESTful.


*
*
*
*

REST hoạt động chủ yếu dựa vào giao thức HTTP. Các vận động cơ bạn dạng nêu bên trên sẽ áp dụng những cách làm HTTP riêng.

GET (SELECT): Trả về một Resource hoặc một list Resource.POST (CREATE): Tạo new một Resource.PUT (UPDATE): update thông tin đến Resource.DELETE (DELETE): Xoá một Resource.

Những cách thức hay hoạt động này thường xuyên được hotline là CRUD tương xứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa.

Hiện tại đa số lập trình viên viết RESTful API bây giờ đều chọn JSON là format chính thức nhưng cũng có khá nhiều người lựa chọn XML làm cho format, nói tầm thường dùng cố kỉnh nào cũng rất được miễn tiện cùng nhanh.

Authentication và dữ liệu trả về

RESTful API không sử dụng session và cookie, nó sử dụng một access_token với từng request. Tài liệu trả về hay có cấu tạo như sau:

"data" : "id": "1", "name": "namlinhchihoasen.com"

Status code

Khi chúng ta request một API nào đó thường thì sẽ sở hữu vài status code để nhận biết sau:

200 OK – Trả về thành công cho mọi phương thức GET, PUT, PATCH hoặc DELETE.201 Created – Trả về lúc 1 Resouce vừa mới được tạo thành công.204 No content – Trả về khi Resource xoá thành công.304 Not Modified – Client có thể sử dụng dữ liệu cache.400 Bad Request – Request không hợp lệ401 Unauthorized – Request cần có auth.403 Forbidden – bị không đồng ý không mang lại phép.404 Not Found – không tìm thấy resource từ URI405 Method Not Allowed – phương thức không chất nhận được với user hiện nay tại.410 Gone – Resource không hề tồn tại, Version cũ đã mất hỗ trợ.415 Unsupported truyền thông Type – Không cung ứng kiểu Resource này.422 Unprocessable Entity – tài liệu không được xác thực429 Too Many Requests – Request bị lắc đầu do bị giới hạn

Nên thực hiện Version

Luôn áp dụng version để khi bạn cần tăng cấp API mà vẫn cung cấp các API cũ.

Xây dựng API cùng với Laravel

Lấy bài toán xây dựng api trên Laravel để làm ví dụ, trước lúc đi vào ta tổng quan về Http Request.

HTTP Request

HTTP request có tất cả 9 nhiều loại method , 2 một số loại được sử dụng thông dụng nhất là GET cùng POST

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

Xem thêm: Hàn Sắt Và Inox Có Hàn Được Với Nhau Không ? Cách Hàn Inox Mỏng Bằng Que Hàn

RESTful Route

Viết Api thì vẫn khai báo router vào file routes/api.php nuốm vì thực hiện file routes/web.php. Các setting mặc cho file api.php trong laravel:

Url: phần đông route được khai báo trong tệp tin này mặc định có prefix url là api (ví dụ: namlinhchihoasen.com/api/products)Middleware: khoác định sẽ tiến hành gán Middleware Group là api, trong tệp tin app/Http/Kernel đã thấy 2 middleware ở trong Middleware Group: api là throttle (giới hạn request / time) và bindings (model binding).

Có thể thiết lập cấu hình giá trị khoác định này trong method mapApiRoutes trong file app/Providers/RouteServiceProvider.php

Tạo các route để triển khai các thao tác như CRUD (Create, Read, Update, Delete):

// Lấy danh mục sản phẩmRoute::get("products", "ApiProductController
index")->name("products.index");// đem detail thành phầm theo idRoute::get("products/id", "ApiProductController
store")->name("products.store");// Update info thành phầm theo id# thực hiện put giả dụ update toàn cục các fieldRoute::put("products/id", "ApiProductController
update")->name("products.update");# thực hiện patch ví như 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 đã có được gán middleware bindings, nếu như muốn sử dụng model binding vào controller thì bọn họ sửa lại tham số trong route như sau:

Route::get("products/product", "ApiProductController
destroy")->name("products.destroy");Ngoài ra trong laravel cũng cung ứng chúng ta 1 cách khai báo gọn ghẽ hơn:

//Nếu không muốn sử dụng tổng thể method trong apiResource hầu hết người hoàn toàn có thể chỉ định áp dụng 1 vài method bởi hàm onlyRoute::apiResource("products", "ApiProductController")->only(<"index", "show">);//Hoặc trường hợp muốn vứt bỏ đi 1 số method không dùng thì có thể sử dụng hàm exceptRoute::apiResource("products", "ApiProductController")->except(<"show", "update">);

Resource Controllers

Tương ứng cùng với các Route RESTful sẽ khai báo sinh sống trên, quan trọng nếu cần sử dụng method apiResource thì laravel cũng cung ứng các method xử lí khớp ứng trong controller.

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

php artisan make:controller Api/ProductController -api

File ProductController tạo ra sẽ như sauNgoài ra nếu như muốn sử dụng model binding khi chế tác 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ư sau, chúng ta để ý tham số của các method show, update, destroy sẽ 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 model binding và route apiResource khi gây ra 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, sản phẩm $product) return $product->update($request->all()); /** * Remove the specified resource from storage. * *
throws Exception */ public function destroy(Product $product) $product->delete(); }Mặc định khi thực hiện route apiResource thì tài liệu trả về sẽ tự động hóa được gửi sang mẫu mã JSON và sẽ sở hữu được status khớp ứng nên chỉ cần return dữ liệu ra là được.

Còn nếu còn muốn tùy trở thành status trả về thì hoàn toàn có thể tham khảo cách bên dưới có sử dụng class IlluminateHttpResponse để lấy status thay bởi vì fix quý hiếm vào ví dụ như HTTP_OK tương ứng sẽ là 200

json($products, Response::HTTP_OK); }}Eloquent ResourcesKhi gây ra API, chúng ta có thể cần transform tài liệu từ controller trước lúc trả về cho những người dùng ứng dụng của bạn, laravel cũng đã hỗ trợ điều này với Eloquent Resources

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

php artisan make:resource Product

File app/Http/Resources/Product.php sẽ sở hữu được nội dung như sau

Mình sẽ tùy chỉnh dữ liệu trả về là chỉ gồm title và price

$this->title, "price" => $this->price, >; }}Ở controller thì mình vẫn sửa lại như 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, hàng hóa $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ư title giỏi price, laravel cũng hỗ trợ rất nhiều thứ như thêm relationships, data …, mọi người dân có thể tham khảo thêm docs trên Laravel.

Authorization

Hiện tại bao gồm 3 nguyên lý Authorize chính:

HTTP BasicJSON web Token (JWT)OAuth2

Tùy thuộc vào service của bạn, mà nên chọn lựa loại Authorize bao gồm mức độ phù hợp, cố gắng giữ nó càng đơn giản càng tốt.

CORS Policy

Viết API thì cũng cần để ý về CORS là gì?

API Document

Ai cũng biết bài toán viết API docs là buộc phải thiết, tuy nhiên để sở hữu một API docs hoàn chỉnh cũng tiêu tốn không ít thời gian. độc nhất là trong khi dự án gấp rút thì mọi tín đồ thường chỉ nhằm API docs ở tầm mức siêu cơ bản. Bài viết liên quan cách viết API Document.

API document là một phần tương từ bỏ như Unit thử nghiệm vậy – rước ngắn nhằm nuôi dài.

Xem thêm: Means Là Gì, Cách Sử Dụng Ra Sao, Nghĩa Của Từ Means

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

Mô tả đầy đủ về params request: gồm những params nào, datatype, require giỏi optional.Nên đưa ra các ví dụ về HTTP requests cùng responses cùng với data chuẩn.Cập nhật Docs hay xuyên, để sát nhất với API có bất kể thay thay đổi gì.Format, cú pháp rất cần được nhất quán, trình bày rõ ràng, chính xác.

Tham khảo thêm các việc có tác dụng API lương cao cuốn hút tại đây