NON-RESTFUL API
Trong phần này, chúng ta khảo sát về các API dùng HTTP nhưng không tương thích với kiến trúc REST (non-RESTful HTTP-based API)
Dĩ nhiên là chúng ta mong muốn các hệ thống hỗ trợ các loại restful API. Tuy nhiên có đôi khi chúng ta sẽ gặp một số loại API dùng HTTP nhưng lại không tương thích với kiểu REST. Trong lĩnh vực mạng, chúng ta thường gặp loại API này khi nó dùng giao tiếp dòng lệnh CLI. Nghĩa là, mỗi lần gọi API thật ra là gửi một lệnh đến một thiết bị, chứ không phải là gửi một dữ liệu nguyên thủy có cấu trúc. Các nền tảng mạng cũ thường được xây dựng và sử dụng các lệnh của CLI, và thật ra đây là các ví dụ phổ biến của việc sử dụng non-Restful API.
Có hai sự khác nhau cơ bản giữa RESTful HTTP-based API và non-RESTful HTTP-based API. Chú ý là cả hai đều sử dụng HTTP. Trong các phần trước, chúng ta đã khảo sát khái niệm các phương thức HTTP request được phân loại thành các nhóm động từ đặc biệt như GET, POST, PATCH, PUT, và DELETE. RESTful API sẽ sử dụng các động từ đặc biệt để mô tả loại thay đổi đang thực hiện trên máy chủ. Ví dụ, trong lĩnh vực mạng, một thay đổi cấu hình sẽ không bao giờ diễn ra nếu bạn đang thực hiện HTTP GET, vì bạn chỉ đang truy xuất dữ liệu. Tuy nhiên nếu một hệ thống dùng HTTP-based API nhưng không tương thích với REST, chúng ta có thể dùng cùng một phương thức HTTP-verb cho mọi cuộc gọi API. Điều này có nghĩa là mọi cuộc gọi API có thể chỉ dùng phương thức POST. Nếu bạn thấy tính chất này của một API, loại API đó vẫn dùng HTTP nhưng không tương thích với kiểu REST, không phải là RESTful API.
Một sự khác nhau nữa đó là địa chỉ URL đang được dùng trong mỗi cuộc gọi API. Nếu một loại HTTP-based API luôn dùng cùng một địa chỉ URL và không cho phép bạn truy cập một tài nguyên cụ thể nào khi thay đổi URL, loại API đó là RESTful API.
Trong các phần vừa rồi, chúng ta đã khảo sát các phương thức HTTP và các mã trả về. Trong phần tiếp theo, chúng ta sẽ tìm hiểu các định dạng dữ liệu được dùng khi các phương thức GET hay POST được gọi. Chúng ta sẽ khảo sát xem cùng một thông tin dữ liệu sẽ được trình bày ở các định dạng khác nhau như thế nào.
Dữ liệu được gửi và nhận trong kết nối RESTful sẽ cần định dạng dữ liệu có cấu trúc. Trong ví dụ này, bạn sẽ thấy các kết quả trả về từ máy chủ sẽ bao gồm các thông tin về ngôi nhà. Các định dạng dữ liệu chuẩn bao gồm XML, JSON và YAML.
Trong phần này, chúng ta khảo sát về các API dùng HTTP nhưng không tương thích với kiến trúc REST (non-RESTful HTTP-based API)
Dĩ nhiên là chúng ta mong muốn các hệ thống hỗ trợ các loại restful API. Tuy nhiên có đôi khi chúng ta sẽ gặp một số loại API dùng HTTP nhưng lại không tương thích với kiểu REST. Trong lĩnh vực mạng, chúng ta thường gặp loại API này khi nó dùng giao tiếp dòng lệnh CLI. Nghĩa là, mỗi lần gọi API thật ra là gửi một lệnh đến một thiết bị, chứ không phải là gửi một dữ liệu nguyên thủy có cấu trúc. Các nền tảng mạng cũ thường được xây dựng và sử dụng các lệnh của CLI, và thật ra đây là các ví dụ phổ biến của việc sử dụng non-Restful API.
Có hai sự khác nhau cơ bản giữa RESTful HTTP-based API và non-RESTful HTTP-based API. Chú ý là cả hai đều sử dụng HTTP. Trong các phần trước, chúng ta đã khảo sát khái niệm các phương thức HTTP request được phân loại thành các nhóm động từ đặc biệt như GET, POST, PATCH, PUT, và DELETE. RESTful API sẽ sử dụng các động từ đặc biệt để mô tả loại thay đổi đang thực hiện trên máy chủ. Ví dụ, trong lĩnh vực mạng, một thay đổi cấu hình sẽ không bao giờ diễn ra nếu bạn đang thực hiện HTTP GET, vì bạn chỉ đang truy xuất dữ liệu. Tuy nhiên nếu một hệ thống dùng HTTP-based API nhưng không tương thích với REST, chúng ta có thể dùng cùng một phương thức HTTP-verb cho mọi cuộc gọi API. Điều này có nghĩa là mọi cuộc gọi API có thể chỉ dùng phương thức POST. Nếu bạn thấy tính chất này của một API, loại API đó vẫn dùng HTTP nhưng không tương thích với kiểu REST, không phải là RESTful API.
Một sự khác nhau nữa đó là địa chỉ URL đang được dùng trong mỗi cuộc gọi API. Nếu một loại HTTP-based API luôn dùng cùng một địa chỉ URL và không cho phép bạn truy cập một tài nguyên cụ thể nào khi thay đổi URL, loại API đó là RESTful API.
Trong các phần vừa rồi, chúng ta đã khảo sát các phương thức HTTP và các mã trả về. Trong phần tiếp theo, chúng ta sẽ tìm hiểu các định dạng dữ liệu được dùng khi các phương thức GET hay POST được gọi. Chúng ta sẽ khảo sát xem cùng một thông tin dữ liệu sẽ được trình bày ở các định dạng khác nhau như thế nào.
Dữ liệu được gửi và nhận trong kết nối RESTful sẽ cần định dạng dữ liệu có cấu trúc. Trong ví dụ này, bạn sẽ thấy các kết quả trả về từ máy chủ sẽ bao gồm các thông tin về ngôi nhà. Các định dạng dữ liệu chuẩn bao gồm XML, JSON và YAML.