API REST là gì theo quan điểm của người tạo ra REST API và từ quan điểm của người tiêu dùng
API là viết tắt của Giao diện lập trình ứng dụng, và đó là một thuật ngữ chung xác định những thứ khác nhau.
Chúng tôi đã thấy cách trình duyệt có thể cung cấp một số API, dưới dạng các chức năng có sẵn cho chúng tôi.
Chúng tôi đã thấy cách Node.js cung cấp cho chúng tôi một API lập trình với các mô-đun mặc định của nó.
API cũng có nghĩa khác: tạo ra một dịch vụ thể hiện một số chức năng cụ thể, được cung cấp thông qua một máy chủ có thể được nhiều máy khách truy cập.
Nói rộng ra, chúng tôi hiện có 2 loại API: API REST và API GraphQL.
Các loại mô hình API khác tồn tại, chẳng hạn như SOAP, nhưng chúng không phổ biến lắm trong thế giới JavaScript.
Trong bài đăng này, chúng ta sẽ nói về các API REST.
Điểm cuối
Trong API REST, chúng tôi tạo ra một sốđiểm cuốimà khách hàng có thể truy cập.
Giả sử chúng tôi muốn tiết lộ danh sách mọi người. Chúng tôi có thể tạo một điểm cuối sẽ phản hồi/people
lộ trình.
Nếu dịch vụ của chúng tôi lắng nghe trên miềntest.com
, chúng tôi sẽ cótest.com/people
URL.
Điểm cuối này sẽ cung cấp dữ liệu ở bất kỳ định dạng nào, nhưng nói chung chúng tôi sử dụngJSON, một định dạng dựa trên văn bản tiện dụng được sử dụng để giao tiếp dữ liệu giữa hai dịch vụ.
Điều này/people
điểm cuối có thể cung cấp danh sách tên của mọi người vàid
Cho mỗi người. Đây có thể làid
mà chúng tôi sử dụng để lưu trữ chúng trong cơ sở dữ liệu chẳng hạn.
Hệ thống của chúng tôi cũng có thể hiển thị một điểm cuối khác mà chúng tôi có thể gọi là/person
. Điều này chấp nhận mộtid
xác định duy nhất một người, như thế này:/person/1
API của chúng tôi sẽ cung cấp thêm thông tin về người đó, ví dụ như tuổi, email, địa chỉ.
Điều quan trọng cần lưu ý là ở điểm cuối đầu tiên, chúng tôi không có bất kỳ tham số nào, nhưng lần này chúng tôi có một tham số.
Các tham số có thể được gửi theo nhiều cách khác nhau và không phải tất cả các điểm cuối sẽ được sử dụng để gửi thông tin từ máy chủ. Một số điểm cuối khác sẽ được sử dụng để thực hiện các hành động, như chúng ta sẽ sớm thấy.
Phương pháp
Tôi đã đề cập rằng/people
endpoint sẽ trả về danh sách những người trong hệ thống của chúng tôi.
Đây là một sự đơn giản hóa và đã đến lúc tìm hiểu sâu hơn.
API REST sử dụng các nguyên tắc giao thức HTTP để cung cấp các chức năng khác nhau dựa trênPhương thức HTTPđã sử dụng:GET
,POST
,PUT
,DELETE
.
GET
là một trong những phổ biến nhất. Khi khách hàng gọi điểm cuối API của chúng tôi bằng phương thức GET, nó báo hiệu rằng nó muốn đọc dữ liệu.
GET /people
sẽ trả về một danh sách những người.
GET /person/1
sẽ trả về một người chi tiết.
Khi phương thức HTTP làPOST
, ý nghĩa hoàn toàn khác. Điểm cuối sẽ giống nhau, nhưng hành động được yêu cầu sẽ là một điểm khác.
Chúng tôi, với tư cách là những người xây dựng API, xác định nghĩa của hte là gì.
Ví dụ, chúng tôi có thể tạo mộtPOST /person
điểm cuối mà khi được gọi sẽ tạo ra một người mới trong cơ sở dữ liệu.
Nó nhận dữ liệu từ máy khách, ở định dạng được xác định trước mà chúng ta có thể chọn. Chúng ta sẽ sớm thấy một ví dụ được thực hiện bằng cách sử dụng Express.
GET
vàPOST
là 2 động từ chính được sử dụng.
Đôi khi chúng tôi sử dụngPUT
vàDELETE
:PUT
đôi khi được sử dụng để cập nhật tài nguyên, chẳng hạn như thay đổi địa chỉ của một người.DELETE
được sử dụng để loại bỏ một tài nguyên.
Những lần khác,POST
được sử dụng cho mọi thứ không đọc, ở đâuGET
Được sử dụng.
Chúng tôi có quyền tự do trong sự lựa chọn này.
Theo tài nguyên, chúng tôi có nghĩa là một thực thể, như mọi người ở dạng số nhiều trong trường hợp/people
, hoặc một người duy nhất trong trường hợp/person
.
Đặt tên điểm cuối API
Nhìn cách tôi đã sử dụng/people
và/person
ở trên.
Những người đang códanh từ.
Sử dụng danh từ cho điểm cuối và sử dụng phương thức HTTP để báo hiệu hành động được coi là phương pháp hay nhất.
Cập nhật một người sử dụng mộtPOST
yêu cầu/person
điểm cuối.
Nếu bạn muốn tạo một API để gửi tin nhắn cho một người, bạn sẽ tạoPOST
yêu cầu sử dụng một/message
điểm cuối, chuyển dữ liệu đến nó để xác định người và thông điệp bạn muốn gửi.
API REST không có trạng thái
API REST là không trạng thái.
Điều này có nghĩa là nó không có bất kỳ bộ nhớ nào giữa các yêu cầu khác nhau.
Hầu hết các API mà bạn có thể tìm thấy đều triển khai cơ chế Khóa API dùng như một cách để theo dõi ai đang gọi một API và cung cấp một cách để giám sát việc sử dụng và giới hạn buộc.
Một API cũng có thể được bảo vệ bằng cơ chế đăng nhập / mật khẩu. Trong trường hợp này, quy trình xác thực API sẽ cần phải xem xét quy trình bắt tay cung cấp mã thông báo sau đó cần được gửi trong mọi yêu cầu trong tương lai, để xác định người dùng và ủy quyền chính xác.
Phản hồi
Một lệnh gọi API sẽ trả về phản hồi cho người dùng, ở 2 dạng: mã trạng thái phản hồi HTTP và nội dung phản hồi HTTP.
Mọi yêu cầu HTTP đều có mã trạng thái.
Chúng tôi có một số quy ước về mã trạng thái phản hồi HTTP: khi bạn sử dụng trình duyệt để mở một trang web, trang sẽ trả về200 OK
mã trạng thái. Nếu trang không được tìm thấy,404 NOT FOUND
mã trạng thái.
Điều tương tự cũng hoạt động đối với các API của chúng tôi.
Những cái thường gặp là:
200 OK
: đây là phản hồi tiêu chuẩn cho các yêu cầu HTTP thành công.201 Created
: Thường là phản hồi cho một yêu cầu ĐĂNG. Yêu cầu đã được hoàn thành và một tài nguyên mới đã được tạo.400 Bad Request
Do lỗi yêu cầu được tạo trên máy khách, máy chủ không thể xử lý yêu cầu. Các lỗi có thể bao gồm một yêu cầu không đúng định dạng, kích thước quá lớn để xử lý hoặc các lỗi khác401 Unauthorized
Được gửi khi yêu cầu xác thực và ứng dụng khách không được ủy quyền403 Forbidden
Tài nguyên không có sẵn vì nhiều lý do. Nếu lý do là xác thực, hãy chọn mã trạng thái 401 Không được phép.404 Not Found
Không thể tìm thấy tài nguyên được yêu cầu.405 Method Not Allowed
Tài nguyên không có sẵn thông qua phương thức HTTP đó, nhưng có thể ở một phương thức khác.500 Internal Server Error
Thông báo lỗi máy chủ chung, được đưa ra khi gặp phải điều kiện không mong muốn và không có thông báo cụ thể nào phù hợp.
Bạn có thể tìm thấy danh sách đầy đủ trênDanh sách mã trạng thái HTTP. Điều cần lưu ý là khi bạn tạo một API, bạn phải luôn trả về mã trạng thái chính xác để thông báo cho khách hàng của bạn.
Nội dung phản hồi thường là một phản hồi JSON với dữ liệu được yêu cầu hoặc một thông báo lỗi.
Chi tiết về cách xây dựng thông báo do bạn, người tạo API hoặc người xây dựng API quyết định.
Các hướng dẫn khác về mạng:
- Giới thiệu về WebSockets
- Cách thức hoạt động của các yêu cầu HTTP
- Danh sách tiêu đề yêu cầu HTTP
- Danh sách tiêu đề phản hồi HTTP
- HTTP so với HTTPS
- RFC là gì?
- Giao thức HTTP
- Giao thức HTTPS
- Hướng dẫn về các yêu cầu HTTP
- Lưu vào bộ nhớ đệm trong HTTP
- Danh sách mã trạng thái HTTP
- CDN là gì?
- Giao thức HTTP / 2
- Một cổng là gì
- DNS, Hệ thống tên miền
- Giao thức TCP
- Giao thức UDP
- Giới thiệu về API REST
- Cách cài đặt chứng chỉ SSL cục bộ trong macOS
- Cách tạo chứng chỉ SSL cục bộ
- Cách định cấu hình Nginx cho HTTPS
- Một proxy ngược nginx đơn giản để cung cấp nhiều ứng dụng Node.js từ các thư mục con
- Proxy ngược là gì?