API RESTful là gì?
API RESTful là một giao diện mà hai hệ thống máy tính sử dụng để trao đổi thông tin một cách an toàn qua internet. Hầu hết các ứng dụng kinh doanh phải giao tiếp với các ứng dụng nội bộ và bên thứ ba khác để thực hiện tác vụ. Ví dụ: để tạo bảng lương hàng tháng, hệ thống báo cáo kế toán nội bộ phải chia sẻ dữ liệu với hệ thống ngân hàng của khách hàng để lập hóa đơn tự động và giao tiếp với ứng dụng bảng chấm công nội bộ. Các API RESTful hỗ trợ trao đổi thông tin này vì chúng tuân theo các tiêu chuẩn giao tiếp phần mềm bảo mật, đáng tin cậy và hiệu quả.
API là gì?
Giao diện lập trình ứng dụng (API) xác định các quy tắc mà bạn phải tuân theo để giao tiếp với các hệ thống phần mềm khác. Các nhà phát triển đưa ra hoặc tạo API để các ứng dụng khác có thể giao tiếp với ứng dụng của họ theo cách lập trình. Ví dụ: ứng dụng bảng chấm công đưa ra một API yêu cầu tên đầy đủ của nhân viên và phạm vi ngày. Khi nhận được thông tin này, bảng chấm công của nhân viên sẽ được xử lý nội bộ và trả về số giờ làm việc trong phạm vi ngày đó.
Bạn có thể coi API web như một cổng giữa client và tài nguyên trên web.
Client (Khách hàng/Máy khách)
Client (khách hàng) là người dùng muốn truy cập thông tin từ web. Client (khách hàng/máy khách) có thể là một người hoặc một hệ thống phần mềm sử dụng API. Ví dụ: các nhà phát triển có thể viết các chương trình truy cập vào dữ liệu thời tiết từ một hệ thống thời tiết. Hoặc bạn có thể truy cập dữ liệu đó từ trình duyệt của mình khi bạn truy cập trực tiếp vào trang web thời tiết.
Tài nguyên
Tài nguyên là thông tin mà các ứng dụng khác nhau cung cấp cho client của chúng. Tài nguyên có thể là hình ảnh, video, văn bản, con số hoặc bất kỳ loại dữ liệu nào. Máy cung cấp tài nguyên cho client cũng được gọi là máy chủ. Các tổ chức sử dụng API để chia sẻ tài nguyên và cung cấp dịch vụ web trong khi vẫn duy trì khả năng bảo mật, kiểm soát và xác thực. Ngoài ra, các API giúp họ xác định client nào có quyền truy cập vào các tài nguyên nội bộ cụ thể.
REST là gì?
Chuyển trạng thái đại diện (REST) là một kiến trúc phần mềm quy định các điều kiện về cách thức hoạt động của API. REST ban đầu được tạo ra như một hướng dẫn để quản lý giao tiếp trên một mạng phức tạp như Internet. Bạn có thể sử dụng kiến trúc dựa trên REST để hỗ trợ giao tiếp hiệu suất cao và đáng tin cậy trên quy mô lớn. Bạn có thể dễ dàng triển khai và sửa đổi REST, mang lại khả năng hiển thị và tính di động đa nền tảng cho bất kỳ hệ thống API nào.
Các nhà phát triển API có thể thiết kế các API bằng cách sử dụng nhiều kiến trúc khác nhau. Các API tuân theo kiểu kiến trúc REST được gọi là API REST. Các dịch vụ web triển khai kiến trúc REST được gọi là dịch vụ web RESTful. Thuật ngữ API RESTful thường là chỉ các API web RESTful. Tuy nhiên, bạn có thể sử dụng các thuật ngữ API REST và API RESTful thay thế cho nhau.
Sau đây là một số nguyên tắc của kiểu kiến trúc REST:
Giao diện thống nhất
Giao diện thống nhất là đặc điểm căn bản cho thiết kế của bất kỳ dịch vụ web RESTful nào. Đặc điểm này chỉ ra rằng máy chủ truyền thông tin ở định dạng chuẩn. Tài nguyên được định dạng được gọi là một dạng biểu diễn trong REST. Định dạng này có thể khác với dạng biểu diễn nội bộ của tài nguyên trên ứng dụng máy chủ. Ví dụ: máy chủ có thể lưu trữ dữ liệu dưới dạng văn bản nhưng gửi dữ liệu ở định dạng biểu diễn HTML.
Giao diện thống nhất quy định 4 ràng buộc về kiến trúc:
- Yêu cầu phải xác định các nguồn lực. Để làm được điều đó, các yêu cầu sử dụng một mã định danh tài nguyên thống nhất.
- Client có đủ thông tin trong dạng biểu diễn tài nguyên để sửa đổi hoặc xóa tài nguyên nếu muốn. Máy chủ đáp ứng điều kiện này bằng cách gửi siêu dữ liệu mô tả thêm về tài nguyên.
- Client nhận được thông tin về cách xử lý thêm dạng biểu diễn. Máy chủ làm được điều này bằng cách gửi các thông báo tự mô tả có chứa siêu dữ liệu về cách client có thể sử dụng chúng tốt nhất.
- Client nhận được thông tin về tất cả các tài nguyên liên quan khác mà client cần để hoàn thành một tác vụ. Máy chủ làm được điều này bằng cách gửi các siêu liên kết trong dạng biểu diễn để client có thể chủ động khám phá thêm tài nguyên.
Phi trạng thái
Trong kiến trúc REST, tình trạng phi trạng thái là chỉ một phương thức giao tiếp trong đó máy chủ hoàn thành mọi yêu cầu của client một cách độc lập với tất cả các yêu cầu trước đó. Client có thể yêu cầu tài nguyên theo bất kỳ thứ tự nào và mọi yêu cầu đều không có trạng thái hoặc tách biệt với các yêu cầu khác. Ràng buộc về thiết kế API REST này đồng nghĩa với việc máy chủ hoàn toàn có thể hiểu và thực hiện yêu cầu vào mọi lúc.
Hệ thống phân lớp
Trong kiến trúc hệ thống phân lớp, client có thể kết nối với các trung gian được ủy quyền khác giữa client và máy chủ, và client sẽ vẫn nhận được phản hồi từ máy chủ. Máy chủ cũng có thể chuyển yêu cầu đến các máy chủ khác. Bạn có thể thiết kế dịch vụ web RESTful của mình để chạy trên nhiều máy chủ với nhiều lớp như bảo mật, ứng dụng và logic kinh doanh, làm việc cùng nhau để đáp ứng các yêu cầu của client. Client sẽ không thể nhìn thấy các lớp này.
Khả năng lưu vào bộ nhớ đệm
Các dịch vụ web RESTful hỗ trợ lưu bộ nhớ đệm. Đây là quá trình lưu trữ một số phản hồi trên client hoặc trên một trung gian để cải thiện thời gian phản hồi của máy chủ. Ví dụ: giả sử bạn truy cập một trang web có cùng hình ảnh đầu trang và chân trang trên mọi trang. Mỗi khi bạn truy cập một trang web mới, máy chủ phải gửi lại những hình ảnh giống nhau. Để tránh điều này, client lưu vào bộ nhớ đệm hoặc lưu trữ những hình ảnh này sau phản hồi đầu tiên rồi sử dụng hình ảnh trực tiếp từ bộ nhớ đệm. Các dịch vụ web RESTful kiểm soát việc lưu bộ nhớ đệm bằng cách sử dụng các phản hồi API tự xác định là có thể lưu được vào bộ nhớ đệm hay không thể lưu được vào bộ nhớ đệm.
Mã theo yêu cầu
Trong kiểu kiến trúc REST, máy chủ có thể tạm thời mở rộng hoặc tùy chỉnh chức năng của client bằng cách truyền mã lập trình phần mềm cho client. Ví dụ: khi bạn điền vào biểu mẫu đăng ký trên bất kỳ trang web nào, trình duyệt của bạn ngay lập tức đánh dấu bất kỳ lỗi nào bạn mắc phải, chẳng hạn như sai số điện thoại. Trình duyệt có thể làm được điều này nhờ mã do máy chủ gửi.
API RESTful mang lại những lợi ích gì?
API RESTful có những lợi ích sau:
Khả năng thay đổi quy mô
Các hệ thống triển khai API REST có thể thay đổi quy mô một cách hiệu quả vì REST tối ưu hóa các tương tác giữa client và máy chủ. Tình trạng phi trạng thái loại bỏ tải của máy chủ vì máy chủ không phải giữ lại thông tin yêu cầu của client trong quá khứ. Việc lưu bộ nhớ đệm được quản lý tốt sẽ loại bỏ một phần hoặc hoàn toàn một số tương tác giữa client và máy chủ. Tất cả các tính năng này hỗ trợ khả năng thay đổi quy mô mà không gây ra tắc nghẽn giao tiếp làm giảm hiệu suất.
Sự linh hoạt
Các dịch vụ web RESTful hỗ trợ phân tách hoàn toàn giữa client và máy chủ. Các dịch vụ này đơn giản hóa và tách riêng các thành phần máy chủ khác nhau để mỗi phần có thể phát triển độc lập. Các thay đổi ở nền tảng hoặc công nghệ tại ứng dụng máy chủ không ảnh hưởng đến ứng dụng client. Khả năng phân lớp các chức năng ứng dụng làm tăng tính linh hoạt hơn nữa. Ví dụ: các nhà phát triển có thể thực hiện các thay đổi đối với lớp cơ sở dữ liệu mà không cần viết lại logic ứng dụng.
Sự độc lập
Các API REST không phụ thuộc vào công nghệ được sử dụng. Bạn có thể viết cả ứng dụng client và máy chủ bằng nhiều ngôn ngữ lập trình khác nhau mà không ảnh hưởng đến thiết kế API. Bạn cũng có thể thay đổi công nghệ cơ sở ở hai phía mà không ảnh hưởng đến giao tiếp.
API RESTful hoạt động như thế nào?
Chức năng cơ bản của API RESTful cũng giống như việc duyệt Internet. Client liên hệ với máy chủ bằng cách sử dụng API khi yêu cầu tài nguyên. Các nhà phát triển API giải thích cách client nên sử dụng API REST trong tài liệu về API ứng dụng máy chủ. Đây là các bước chung cho bất kỳ lệnh gọi API REST nào:
- Client gửi một yêu cầu đến máy chủ. Client làm theo tài liệu API để định dạng yêu cầu theo cách mà máy chủ hiểu được.
- Máy chủ xác thực và xác nhận máy khách có quyền đưa ra yêu cầu đó.
- Máy chủ nhận yêu cầu và xử lý trong nội bộ.
- Máy chủ trả về một phản hồi đến client. Phản hồi chứa thông tin cho client biết liệu yêu cầu có thành công hay không. Phản hồi cũng bao gồm bất kỳ thông tin nào mà client yêu cầu.
Chi tiết về phản hồi và yêu cầu API REST sẽ khác nhau đôi chút tùy thuộc vào cách các nhà phát triển API thiết kế API.
Yêu cầu client API RESTful chứa những gì?
Các API RESTful đòi hỏi các yêu cầu phải chứa những thành phần chính sau:
Mã định danh tài nguyên duy nhất
Máy chủ xác định từng tài nguyên bằng mã định danh tài nguyên duy nhất. Đối với các dịch vụ REST, máy chủ thường thực hiện việc xác định tài nguyên bằng cách sử dụng Hệ thống định vị tài nguyên thống nhất (URL). URL chỉ định đường dẫn đến tài nguyên. URL tương tự như địa chỉ trang web mà bạn nhập vào trình duyệt của mình để truy cập vào bất kỳ trang web nào. URL còn được gọi là điểm cuối yêu cầu và chỉ định rõ cho máy chủ rằng client yêu cầu điều gì.
Phương pháp
Các nhà phát triển thường triển khai các API RESTful bằng cách sử dụng Giao thức truyền siêu văn bản (HTTP). Phương thức HTTP cho máy chủ biết máy chủ cần làm gì với tài nguyên. Sau đây là 4 phương thức HTTP phổ biến:
GET
Client sử dụng GET để truy cập các tài nguyên nằm tại URL được chỉ định trên máy chủ. Client có thể lưu vào bộ nhớ đệm các yêu cầu GET và gửi các tham số trong yêu cầu API RESTful để chỉ dẫn máy chủ lọc dữ liệu trước khi gửi.
POST
Client sử dụng POST để gửi dữ liệu đến máy chủ. Client gửi kèm dạng biểu diễn dữ liệu với yêu cầu. Gửi cùng một yêu cầu POST nhiều lần có tác dụng phụ là tạo ra cùng một tài nguyên nhiều lần.
PUT
Client sử dụng PUT để cập nhật các tài nguyên hiện có trên máy chủ. Không giống như POST, gửi cùng một yêu cầu PUT nhiều lần trong một dịch vụ web RESTful sẽ cho cùng một kết quả.
DELETE
Client sử dụng yêu cầu DELETE để xóa tài nguyên. Yêu cầu DELETE có thể thay đổi trạng thái máy chủ. Tuy nhiên, nếu người dùng không vượt qua quy trình xác thực thích hợp, yêu cầu sẽ không thành công.
Tiêu đề HTTP
Tiêu đề yêu cầu là siêu dữ liệu được trao đổi giữa client và máy chủ. Ví dụ: tiêu đề yêu cầu cho biết định dạng của yêu cầu và phản hồi, cung cấp thông tin về trạng thái yêu cầu, v.v.
Dữ liệu
Các yêu cầu API REST có thể bao gồm dữ liệu cho POST, PUT và các phương thức HTTP khác để hoạt động thành công.
Tham số
Các yêu cầu API RESTful có thể bao gồm các tham số cung cấp cho máy chủ thêm chi tiết về những gì cần phải thực hiện. Sau đây là một số loại tham số khác nhau:
- Tham số đường dẫn chỉ định chi tiết của URL.
- Tham số truy vấn yêu cầu thêm thông tin về tài nguyên.
- Tham số cookie xác thực client một cách nhanh chóng.
Các phương thức xác thực API RESTful là gì?
Dịch vụ web RESTful phải xác thực các yêu cầu trước khi có thể gửi phản hồi. Xác thực là quá trình xác minh danh tính. Ví dụ: bạn có thể chứng minh danh tính của mình bằng cách xuất trình thẻ căn cước hoặc bằng lái xe. Tương tự như vậy, các client dịch vụ RESTful phải chứng minh danh tính với máy chủ để thiết lập sự tin tưởng.
API RESTful có 4 phương thức xác thực phổ biến:
Xác thực HTTP
HTTP xác định một số lược đồ xác thực mà bạn có thể sử dụng trực tiếp khi triển khai API REST. Sau đây là hai trong số các lược đồ này:
Xác thực cơ bản
Trong xác thực cơ bản, client gửi tên người dùng và mật khẩu trong tiêu đề yêu cầu. Client mã hóa những thông tin này bằng base64. Đây là một kỹ thuật mã hóa chuyển đổi cặp thông tin thành một tập hợp gồm 64 ký tự để truyền tải an toàn.
Xác thực người mang mã
Thuật ngữ xác thực người mang mã là chỉ quá trình cấp quyền kiểm soát truy cập cho người mang mã thông báo. Mã thông báo này thường là một chuỗi ký tự được mã hóa mà máy chủ tạo ra để phản hồi một yêu cầu đăng nhập. Client gửi mã thông báo trong tiêu đề yêu cầu để truy cập tài nguyên.
Khóa API
Khóa API là một tùy chọn khác để xác thực API REST. Với cách này, máy chủ chỉ định một giá trị được tạo duy nhất cho client lần đầu. Bất cứ khi nào client cố gắng truy cập tài nguyên, client sẽ sử dụng khóa API duy nhất này để xác minh chính mình. Khóa API kém an toàn hơn vì client phải truyền khóa, điều này khiến khóa API dễ bị đánh cắp trên mạng.
OAuth
OAuth kết hợp mật khẩu và mã thông báo để truy cập đăng nhập với độ an toàn cao vào bất kỳ hệ thống nào. Đầu tiên, máy chủ yêu cầu mật khẩu và sau đó yêu cầu tiếp mã thông báo để hoàn tất quá trình cấp quyền. Máy chủ có thể kiểm tra mã thông báo bất kỳ lúc nào và theo thời gian với phạm vi và thời gian tồn tại cụ thể.
Phản hồi máy chủ API RESTful chứa những gì?
Nguyên tắc REST yêu cầu phản hồi của máy chủ phải chứa các thành phần chính sau:
Dòng trạng thái
Dòng trạng thái chứa mã trạng thái gồm ba chữ số cho biết yêu cầu thành công hay thất bại. Ví dụ: mã 2XX cho biết đã thành công, nhưng mã 4XX và 5XX cho biết đã xuất hiện lỗi. Mã 3XX cho biết đã chuyển hướng URL.
Sau đây là một số mã trạng thái thông thường:
- 200: Phản hồi thành công thông thường
- 201: Phản hồi thành công của phương thức POST
- 400: Yêu cầu không chính xác khiến máy chủ không thể xử lý
- 404: Không tìm thấy tài nguyên
Nội dung thông báo
Phần nội dung phản hồi chứa dạng biểu diễn tài nguyên. Máy chủ chọn một định dạng biểu diễn thích hợp dựa trên những gì có trong các tiêu đề yêu cầu. Client có thể yêu cầu thông tin ở định dạng XML hoặc JSON, định dạng này xác định cách dữ liệu được viết dưới dạng văn bản thuần túy. Ví dụ: nếu client yêu cầu tên và tuổi của một người tên là John, máy chủ sẽ trả về một dạng biểu diễn JSON như sau:
'{"name":"John", "age":30}'
Tiêu đề
Phản hồi cũng chứa tiêu đề hoặc siêu dữ liệu về phản hồi. Chúng cung cấp thêm ngữ cảnh về phản hồi và bao gồm thông tin như máy chủ, mã hóa, ngày tháng và loại nội dung.
AWS có thể giúp bạn quản lý API RESTful như thế nào?
Cổng API Amazon là dịch vụ được quản lý hoàn toàn giúp các nhà phát triển dễ dàng tạo, phát hành, duy trì, giám sát và bảo vệ API ở mọi quy mô. Bằng cách sử dụng API Gateway, bạn có thể tạo các API RESTful để kích hoạt các ứng dụng giao tiếp hai chiều theo thời gian thực:
Sử dụng API Gateway, bạn có thể:
- Mang đến cho người dùng hiệu suất tốc độ cao cho cả phản hồi và yêu cầu API.
- Cho phép truy cập các API của bạn bằng AWS Identity and Access Management (IAM) và Amazon. Cognito, cả hai đều cung cấp hỗ trợ OAuth gốc.
- Chạy đồng thời nhiều phiên bản của cùng một API với API Gateway để lặp lại, kiểm tra và phát hành các phiên bản mới một cách nhanh chóng.
- Theo dõi số liệu hiệu suất và thông tin về lệnh gọi API, độ trễ dữ liệu và tỷ lệ lỗi từ API Gateway.
Bắt đầu sử dụng Cổng API bằng cách tham khảo hướng dẫn từng bước của chúng tôi và tạo tài khoản AWS ngay hôm nay.
Các bước tiếp theo trên AWS
Nhận ngay quyền sử dụng Bậc miễn phí của AWS.