RESTful API Cho Người Bắt Đầu
Nếu bạn tìm thấy bài viết này của tôi trên Google thì tôi đoán rằng bạn đã từng ít nhất một vài lần nghe về thuật ngữ RESTful API và đang không hiểu chính xác thuật ngữ này là gì. Và nếu giống như tôi thì có thể bạn đã phải bỏ ra vài giờ đồng hồ để đọc các giải thích trên mạng mà cuối cùng vẫn ...
Nếu bạn tìm thấy bài viết này của tôi trên Google thì tôi đoán rằng bạn đã từng ít nhất một vài lần nghe về thuật ngữ RESTful API và đang không hiểu chính xác thuật ngữ này là gì. Và nếu giống như tôi thì có thể bạn đã phải bỏ ra vài giờ đồng hồ để đọc các giải thích trên mạng mà cuối cùng vẫn không hiểu tường tận về thuậ ngữ này. Nếu bạn đang trong trường hợp này thì hãy bỏ ra 10 phút để đọc bài viết này. Tôi sẽ trình bày theo cách thực tế, ngắn gọn và dễ hiểu nhất có thể để bạn nắm vẵng được khái niệm RESTful API để áp dụng trong việc tạo ứng dụng REST API dựa trên những hiểu biết có được.
Đầu tiên chúng ta cần tìm hiểu về khái niệm resource.
Resource
Quản lý resource (tài nguyên) là một phần quan trọng và chiếm phần lớn trong việc phát triển website. Trong đó resource của các website khác nhau có thể sẽ khác nhau. Với các trang mạng xã hội như Facebook thì resource thường là danh sách người dùng (user hoặc account), danh sách các bài viết (post hoặc article), các ảnh được đăng (photo hoặc image), các trang fanpage (fanpage)... Đối với một trang chia sẻ ảnh như Instagram thì resource có thể là các ảnh được đăng (photo), danh sách người dùng (user)... Đối với các trang bán hàng thì resource có thể là danh sách sản phẩm (product), danh sách các người bán (seller), danh sách khách hàng (user hay customer)...
Việc quản lý resource của một website bao gồm 4 tác vụ chính:
- Tạo mới một resource (create)
- Lấy thông tin một resource (read)
- Cập nhật một resource (update)
- Xoá một resource (delete)
Có rất nhiều cách khác nhau để xây dựng một trang web thực hiện 4 tác vụ trên. Ví dụ với một trang blog chạy dưới tên miền là http://my-blog.xyz thì để xem nội dung một bài viết (post) với ID là 123 bạn có thể làm theo một trong các cách sau:
- Gửi một request tới URL http://my-blog.xyz/posts?id=123 với HTTP method là GET
- Gửi một request tới URL http://my-blog.xyz/posts/123 với HTTP method là GET
- Gửi một request tới URL http://my-blog.xyz/action=view_post&id=123 với HTTP method là GET
- Gửi một request tới URL http://my-blog.xyz/view_post&id=123 với HTTP method là GET
- Gửi một request tới URL http://my-blog.xyz/posts?id=123 với HTTP method là POST
- Gửi một request tới URL http://my-blog.xyz/posts/123 với HTTP method là POST
- ...
Và sau một thời gian dài thì người ta đã thống nhất ra các tiêu chuẩn khác nhau để thực hiện việc quản lý resource. Các tiêu chuẩn này (hay còn được gọi là Web API hoặc HTTP API) quy định một cách thống nhất việc quản lý các resource của web. Và RESTful là một trong các web API được sử dụng phổ biến ngày nay.
RESTful API Là Gì
RESTful API là một tiêu chuẩn dùng trong việc thết kế các thiết kế API cho các ứng dụng web để quản lý các resource. RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến nhất ngày nay.
Trọng tâm của REST quy định cách sử dụng các HTTP method (như GET, POST, PUT, DELETE...) và cách định dạng các URL cho ứng dụng web để quản các resource. Ví dụ với một trang blog để quản lý các bài viết chúng ta có các URL đi với HTTP method như sau:
- URL tạo bài viết: http://my-blog.xyz/posts. Tương ứng với HTTP method là POST
- URL đọc bài viết với ID là 123: http://my-blog.xyz/posts/123. Tương ứng với HTTP method là GET
- URL cập nhật bài viết với ID là 123: http://my-blog.xyz/posts/123. Tương ứng với HTTP method là PUT
- URL xoá bài viết với ID là 123: http://my-blog.xyz/posts/123. Tương ứng với HTTP method là DELETE
Với các ứng dụng web được thiết kế sử dụng RESTful, lập trình viên có thể dễ dàng biết được URL và HTTP method để quản lý một resource. Bạn cũng cần lưu ý bản thân RESTful không quy định logic code ứng dụng và RESTful cũng không giới hạn bởi ngôn ngữ lập trình ứng dụng. Bất kỳ ngôn ngữ lập trình (hoặc framework) nào cũng có thể áp dụng RESTful trong việc thiết kế API cho ứng dụng web.
REST và REST(ful)
Một vấn đề mà nhiều bạn mới tìm hiểu về RESTful cũng thường cảm thấy bối rối đó là REST và RESTful khác nhau như thế nào. REST là viết tắt của cụm từ Representational State Transfer và các ứng dụng sử dụng kiểu thiết kế REST thì được gọi là RESTful (-ful là tiếp vị ngữ giống như beauty và beautiful). Tất nhiên bạn cũng có thể sử dụng thuật ngữ REST thay cho RESTful và ngược lại.