Cơ bản về REST và RESTful API

Cơ bản về REST và RESTful API

Chúng ta thường nghe về REST và RESTful API trong phát triển ứng dụng Web, nhất là khi viết ứng dụng trải dài từ Web server tới Mobile app. Tuy vậy nhưng bản thân REST lại không phải là tên 1 kỹ thuật, mà gần với 1 bộ các quy tắc dùng để tạo ra các API hơn.

REST và RESTful API

REST là viết tắt của REpresentational State Transfer. REST là tập hợp các hướng dẫn và kiến trúc sử dụng cho việc truyền dữ liệu. REST áp dụng phổ biến cho các Web app, nhưng cũng hoàn toàn có thể sử dụng cho các phần mềm nói chung.

Vì thế RESTful API là các API mà tuân theo các kiến trúc và quy tắc của REST.

Kiến trúc REST

Kiến trúc REST có 1 số đặc điểm như sau

  • Nhất quán xuyên suốt các API. Ví dụ: luôn luôn sử dụng danh từ số nhiều thay vì khi số nhiều, khi số ít
  • Tồn tại mà không lưu trạng thái (Stateless existence), ví dụ như không sử dụng session của server. Đây chính là lý do vì sao lại có cụm State Transfer (ST) trong REST. Tính chất này đảm bảo rằng mỗi khi client submit 1 request, request ấy sẽ bao gồm toàn bộ các thông tin mà server cần để xử lý request. Đây là điều cần thiết để build 1 ứng dụng phục vụ lên tới hàng triệu user.
  • 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

Client và Server tương tác thông qua RESTful API

API là UI đối với developer“, vậy nên API cần được thiết kế sao cho dễ sử dụng và tạo được trải nghiệm tốt. RESTful API là các API được thiết kế với mục đích như vậy

Các điểm cần lưu ý về API

Phương thức truy cập

Đối với các Web app, ta có 4 phương thức được sử dụng để truy cập RESTful API

  1. GET để lấy về 1 đối tượng
  2. POST để tạo ra đối tượng mới
  3. PUT để sửa đổi hoặc thay thế đối tượng
  4. DELETE để xoá đi đối tượng

Các phương thức trên sẽ được truyền lên server thông qua API call. Hầu hết các hệ thống để chỉ cho phép sử dụng GET request để lấy dữ liệu từ server.

Authentication

Authentication thì mặc định là không bắt buộc, nhưng bạn nên cài đặt đối với các request liên quan tới POST/PUT/DELETE. Đối với 1 số dịch vụ nhiều người dùng như Twitter, họ bắt buộc authentication đối với tất cả các endpoint để tránh việc sử dụng sai mục đích.

Return type

Dữ liệu trả về (return type) thường là kiểu JSON.  Ngoài ra XML cũng là 1 lựa chọn không tệ.

Danh từ và Động từ

RESTful API sử dụng danh từ cho đối tượng, và động từ cho các hành động. Ví dụ như Flickr

API Rate Limit

Là giới hạn số lần request tới API server. Số lần giới hạn này có thể được tính trên user, application hoặc cụ thể hơn là trên 1 token. Mục đích của con số này nhằm để hạn chế việc lạm dụng API, hoặc 1 hướng khác là nhằm thu phí sử dụng dịch vụ. Ví dụ như Google Maps API, hoàn toàn free nhưng nếu bạn muốn request nhiều hơn thì cần trả thêm tiền.

URL Endpoint

URL Endpoint là URL để client gửi request lên server. Thông thường endpoint sẽ đánh version bằng những cụm như /v2/ hoặc /2.0/. Ví dụ như API search của Twitter có dạng: https://api.twitter.com/1.1/search/tweets.json?q=%40twitterapi. Bạn cần lưu ý rằng với cùng 1 endpoint, nếu phương thức request (GET/DELETE..) khác nhau vẫn có thể trả về các kết quả khác nhau.

Bắt đầu

Để bắt đầu với API, bạn có thể tự trải nghiệm với API của 1 số website nổi tiếng sau

Tự viết API

Nếu muốn tự viết 1 API của riêng mình, bạn có thể tham khảo 1 số tài liệu dưới đây

 

Bài viết có tham khảo Hongkiat 

COMMENTS