🙆‍♂️Tìm hiểu về RestAPI

What is representational state transfer (REST)? What is Restful API)? How does it work?

Notes

  • HTML (viết tắt của từ HyperText Markup Language, hay là "Ngôn ngữ Đánh dấu Siêu văn bản") là một ngôn ngữ đánh dấu được thiết kế ra để tạo nên các trang web trên World Wide Web. Nó có thể được trợ giúp bởi các công nghệ như CSS và các ngôn ngữ kịch bản giống như JavaScript.

  • API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác. API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML.

  • JSON (JavaScript Object Notation) một định dạng phổ biến để gửi và yêu cầu dữ liệu thông qua API REST.. Một đối tượng JSON trông giống như một Đối tượng JavaScript. Trong JSON, mỗi thuộc tính và giá trị ở dạng “key” and “value” được đặt trong dấu ngoặc kép.

  • XML (Extensible Markup Language): là một ngôn ngữ đánh dấu và định dạng tệp để lưu trữ, truyền và tái tạo lại dữ liệu tùy ý. Nó xác định một tập hợp các quy tắc để mã hóa tài liệu ở định dạng vừa có thể đọc được bởi con người vừa có thể đọc được bằng máy móc.

Rest là gì?

REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến trúc để viết API. Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy. Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử lý dữ liệu. Rest Api thường không được xem là công nghệ, mà nó là giải pháp giúp tạo ra những ứng dụng web services chuyên dụng để thay thế cho nhiều kiểu khác như: SOAP, WSDL,...

Restful API?

RESTful API (còn được gọi là REST API) là một tập hợp các tiêu chuẩn dùng trong việc xây dựng và thiết kế API cho web services để việc quản lý các Resource trở nên dễ dàng hơn. Có thể dễ dàng nhận thấy rằng RESTful API chú trọng vào tài nguyên của hệ thống, những Resource này thường được định dạng sẵn và sử dụng HTTP để truyền tải đi.

RESTful hoạt động như thế nào?

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

  • GET (SELECT): Trả về một Resource hoặc một danh sách Resource.

  • POST (CREATE): Tạo mới một Resource.

  • PUT (UPDATE): Cập nhật thông tin cho Resource.

  • DELETE (DELETE): Xoá một Resource. Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa.

Ở thời điểm hiện tại, JSON được rất nhiều lập trình viên sử dụng làm format (định dạng) để viết RESTful API

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 mỗi request. Dữ liệu trả về thường có cấu trúc như sau:

{
    "data":  {
        "id": 1,
         "name" : "Hana"
   }
}

Ý nghĩa của các Status code

200 OK – Trả về thành công cho những phương thức GET, PUT, PATCH hoặc DELETE. 201 Created – Trả về khi một Resouce vừa đượ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ị từ chối không cho phép. 404 Not Found – Không tìm thấy resource từ URI 405 Method Not Allowed – Phương thức không cho phép với user hiện tại. 410 Gone – Resource không còn tồn tại, Version cũ đã không còn hỗ trợ. 415 Unsupported Media Type – Không hỗ trợ kiểu Resource này. 422 Unprocessable Entity – Dữ liệu không được xác thực 429 Too Many Requests – Request bị từ chối do bị giới hạn

Authorization

Hiện tại có 3 cơ chế Authorize chính:

  • HTTP Basic

  • JSON Web Token (JWT)

  • OAuth2

Nguyên tắc ràng buộc của Rest

6 nguyên tắc ràng buộc của kiến trúc RESTful

  1. Client–server architecture

  2. Cacheability

  3. Statelessness

  4. Layered system

  5. Uniform interface

  6. Code on demand (Optional)

Cấu trúc thông điệp của Rest

Rest Request gồm 4 thành phần chính:

  1. Method - CRUD : POST, PUT, GET, DELETE

  2. Endpoint - Chứa URI ( phổ biến nhất là URL )

  3. Header - Chứa thông tin liên quan đến client và server như tên, trạng thái, authentication, ip, …

  4. Body - Chứa dữ liệu

Rest Response - Server gửi đại diện dữ liệu thường được viết ở dạng XML, JSON, …

Khối xây dựng Rest

Rest Headers: Tiêu đề HTTP là một phần quan trọng của yêu cầu và phản hồi API vì chúng đại diện cho siêu dữ liệu được liên kết với yêu cầu và phản hồi API

  1. Request and Response

  2. Body Request Authorization

  3. Response Caching

  4. Response Cookies Rest Body: Tạo phần thân dữ liệu cho điểm cuối để kiểm tra. Điều này đôi khi được gọi là tải trọng. Xây dựng một phần thân bất có kỳ định dạng mà API mong muốn. Trường hợp của Rubrik, định dạng phải là JSON, nhưng các API khác có thể sử dụng hoàn toàn XML, YAML… Rest Params: Sử dụng các tham số truy vấn để kiểm soát dữ liệu nào được trả về trong các phản hồi của điểm cuối. Rest Authorization : Chứng minh có quyền truy cập, như kiểu có một cái chìa khóa nhưng chỉ được phép mở một vài cửa trong nhà chứ không được phép mở tất cả các cửa.

Đặc điểm

Có tính nhất quán xuyên suốt các API. Tồn tại mà không lưu trạng thái (Stateless existence), Sử dụng HTTP status code khi có thể. Sử dụng URL Endpoint có phân tầng logic. Đánh version trong URL thay vì trong HTTP Headers.

Ưu, nhược điểm

a, Ưu điểm

REST thích ứng tốt với các công nghệ web mới, dễ dàng sử dụng và bảo trì. Tách biệt rõ ràng giữa server và client, chỉ giao tiếp thông qua các phương thức HTTP và URI (đọc lại bài viết REST 101). Các thông tin có thể được lưu lại phía client → tránh phải gọi đến resource nhiều lần. Có thể sử dụng bất kỳ cấu trúc nào (XML, JSON, hoặc cấu trúc do server và client quy ước với nhau).

b, Nhược điểm

Chỉ hoạt động trên các giao thức HTTP. Việc bảo mật và xác thực có thể không đảm bảo bằng SOAP (stateless).

via: viblo

Last updated