Sự khác biệt giữa tài nguyên và điểm cuối là gì?


139

Tôi đã nghe cả "tài nguyên" và "điểm cuối" để chỉ cùng một điều. Có vẻ như tài nguyên là một thuật ngữ mới hơn.

sự khác biệt giữa chúng là gì? "Tài nguyên" có ngụ ý một thiết kế RESTful không?

Câu trả lời:


107

NGHỈ NGƠI

Tài nguyên là một tập hợp con RESTful của Endpoint .

Một điểm cuối của chính nó là vị trí mà một dịch vụ có thể được truy cập:

https://www.google.com    # Serves HTML
8.8.8.8                   # Serves DNS
/services/service.asmx    # Serves an ASP.NET Web Service

Một tài nguyên đề cập đến một hoặc nhiều danh từ đang được phục vụ, được thể hiện theo kiểu được đặt tên, bởi vì con người dễ hiểu:

/api/users/johnny         # Look up johnny from a users collection.
/v2/books/1234            # Get book with ID 1234 in API v2 schema.

Tất cả những điều trên có thể được coi là điểm cuối dịch vụ, nhưng chỉ nhóm dưới cùng mới được coi là tài nguyên, nói một cách khéo léo. Nhóm hàng đầu không biểu cảm về nội dung mà nó cung cấp.

Một yêu cầu REST giống như một câu bao gồm các danh từ (tài nguyên) và động từ (phương thức HTTP):

  • GET(phương thức) người dùng có tên johnny(tài nguyên).
  • DELETE(phương pháp) cuốn sách với id 1234(tài nguyên).

Không phải REST

Điểm cuối thường đề cập đến một dịch vụ, nhưng tài nguyên có thể có nghĩa là rất nhiều thứ. Dưới đây là một số ví dụ về tài nguyên phụ thuộc vào bối cảnh chúng được sử dụng.

URL: Bộ định vị "Tài nguyên" thống nhất

  • Có thể là RESTful, nhưng thường thì không. Trong trường hợp này, điểm cuối gần như đồng nghĩa.

Quản lý nguồn tài nguyên

  • Trong GCP / AWS , tài nguyên được sử dụng để tham chiếu đến cơ sở hạ tầng đám mây.
  • Trong điện toán nói chung, tài nguyên là một tham chiếu đến một thành phần có sẵn có giới hạn .

Từ điển

  • Các định nghĩa cung cấp nhiều cách sử dụng hơn của từ này.

Một cái gì đó có thể được sử dụng để giúp bạn:

Thư viện là một tài nguyên quý giá và ông thường xuyên sử dụng nó.

Tài nguyên là các chất tự nhiên như nước và gỗ có giá trị trong việc hỗ trợ cuộc sống:

[pl] Trái đất có nguồn lực hạn chế và nếu chúng ta không tái chế chúng, chúng ta sẽ sử dụng chúng.

Tài nguyên cũng là những thứ có giá trị như tiền hoặc tài sản mà bạn có thể sử dụng khi bạn cần chúng:

[pl] Chính phủ không có đủ nguồn lực để thuê số lượng giáo viên cần thiết.


Đạo đức

Thuật ngữ tài nguyên theo định nghĩa có rất nhiều sắc thái. Tất cả phụ thuộc vào bối cảnh được sử dụng trong.


1
Tôi nghi ngờ như vậy. Bạn đã thấy bất kỳ tài liệu tham khảo giải thích hoặc tài liệu này?
B Bảy

Đã thêm một số liên kết cung cấp một cảm giác cho mỗi điều khoản.
cchamberlain

84

Các thuật ngữ tài nguyênđiểm cuối thường được sử dụng đồng nghĩa. Nhưng trên thực tế chúng không có nghĩa tương tự.

Điểm cuối hạn được tập trung vào URL được sử dụng để thực hiện yêu cầu.
Thuật ngữ tài nguyên được tập trung vào tập dữ liệu được trả về bởi một yêu cầu.

Bây giờ, cùng một tài nguyên có thể được truy cập bởi nhiều điểm cuối khác nhau .
Ngoài ra, cùng một điểm cuối có thể trả về các tài nguyên khác nhau , tùy thuộc vào chuỗi truy vấn.

Hãy cho chúng tôi xem một số ví dụ:

Các điểm cuối khác nhau truy cập vào cùng một tài nguyên

Hãy xem các ví dụ sau đây về các điểm cuối khác nhau :

/api/companies/5/employees/3
/api/v2/companies/5/employees/3
/api/employees/3

Tất nhiên họ có thể truy cập cùng một tài nguyên trong một API nhất định.

Ngoài ra một API hiện có có thể được thay đổi hoàn toàn. Điều này có thể dẫn đến các điểm cuối mới sẽ truy cập cùng một tài nguyên cũ bằng các URL hoàn toàn mới và khác nhau:

/api/employees/3
/new_api/staff/3

Một điểm cuối truy cập các tài nguyên khác nhau

Nếu điểm cuối của bạn trả về một bộ sưu tập, bạn có thể thực hiện tìm kiếm / lọc / sắp xếp bằng các chuỗi truy vấn. Do đó, tất cả các URL sau đều sử dụng cùng một điểm cuối ( /api/companies), nhưng chúng có thể trả về các tài nguyên khác nhau (hoặc bộ sưu tập tài nguyên , theo định nghĩa là chính các tài nguyên):

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens

4
giải thích độc đáo
mangonights

1
"Kết quả là tất cả các URL sau đều sử dụng cùng một điểm cuối (/ api / công ty), nhưng chúng có thể trả về các tài nguyên khác nhau." Tôi không có ý xúc phạm nhưng bạn thực sự chỉ đang giải thích ở đây. Về mặt REST, đây chỉ là các vị trí của các tài nguyên khác nhau. Phần điểm cuối bạn đã cố gắng tính là một phần khác của URL. Đó là bởi vì bạn là một lập trình viên và bạn đang nghĩ về cách nó được triển khai, như một đoạn mã trong một phương thức hành động duy nhất. Hãy tưởng tượng rằng tất cả các URL khác nhau này đã được định tuyến và được phục vụ từ 4 máy chủ, tất cả chúng có cùng một điểm cuối không? Nó không có ý nghĩa bây giờ.
Luke Puplett

1
Các chuỗi truy vấn lý do không phải là một phần của điểm cuối là vì điểm cuối không phải là một phần của ngôn ngữ REST cũng như URL. Nó không phải là. Bạn đang suy nghĩ về việc mã hóa ứng dụng web xử lý. REST không đề cập gì về thông số truy vấn hoặc sắp xếp hoặc bất cứ điều gì. Nó chỉ không. Nếu bạn sử dụng / đơn đặt hàng để trả về một bộ sưu tập và / đơn hàng? Top = 10 đó chỉ là các URL đẹp, thì nó không nhiều hoặc ít RESTful hơn là sử dụng liên kết đến / 32knre32nj cho bộ sưu tập và liên kết đến / abcd cho mười đơn hàng hàng đầu. Họ chỉ là định danh tài nguyên. Các URL không thể nhiều hơn hoặc ít RESTful và điểm cuối không phải là một điều.
Luke Puplett

Nói thêm, một phần quan trọng của REST là liên kết, do đó người tiêu dùng không cần quan tâm đến các định danh tài nguyên, tôi không quan tâm URL nằm ở đâu sau nút Thêm Nhận xét ở đây. Khi chúng tôi ngừng suy nghĩ về các điểm cuối và các URL đẹp và thay vào đó là các siêu liên kết trong đó URL là ngẫu nhiên, việc thiết kế các API dựa trên quy trình công việc tốt về mục tiêu tương tác sẽ dễ dàng hơn nhiều - tôi muốn tìm kiếm một công ty để x - API của bạn phải là một hành trình đến x nơi tìm kiếm ở giữa dòng chảy đến trạng thái ứng dụng cuối cùng.
Luke Puplett

Không có định nghĩa hoặc thông số kỹ thuật cao cho "điểm cuối". Tất cả sôi sục với công nghệ được sử dụng để tham khảo. Trường hợp cụ thể, google "Điểm cuối là gì?" và một trong những bài viết hàng đầu về vấn đề này là trang này. Chúng tôi đang xác định nó ở đây dựa trên bối cảnh chúng tôi đã thấy nó được sử dụng. Tất cả các ví dụ trong câu trả lời này là RESTful, mặc dù bản thân điểm cuối không nhất thiết phải là RESTful. Xem SOAP.
cchamberlain

7

Có thể của tôi không phải là một câu trả lời tuyệt vời nhưng ở đây đi.

Do làm việc nhiều hơn với các dịch vụ web RESTful thực sự qua HTTP, tôi đã cố gắng tránh mọi người sử dụng thuật ngữ điểm cuối vì nó không có định nghĩa rõ ràng và thay vào đó sử dụng ngôn ngữ của REST là tài nguyên và vị trí tài nguyên.

Theo tôi, điểm cuối là một thuật ngữ TCP. Nó được kết hợp với HTTP vì một phần của URL xác định máy chủ nghe.

Vì vậy, tài nguyên không phải là một thuật ngữ mới hơn, tôi không nghĩ rằng, tôi nghĩ rằng điểm cuối luôn bị chiếm dụng và chúng tôi nhận ra rằng khi chúng ta nghĩ về REST như một kiểu API.

Biên tập

Tôi viết blog về điều này.

https://medium.com/@lukepuplett/stop-saying-endpoint-92c19e33e819


1

Theo https://apiblueprint.org/documentation/examples/13-named-endpoint.htmltài nguyên là nơi lưu trữ "chung" của thực thể nhất định - ví dụ: khách hàng / 30654 / đơn đặt hàng, trong khi điểm cuối là hành động cụ thể (Phương thức HTTP) trên tài nguyên đã cho. Vì vậy, một tài nguyên có thể có nhiều điểm cuối.


1
Xin lỗi @Dafka, nhưng bạn đã sai. Một điểm cuối không liên quan gì đến động từ (phương thức HTTP như GET, POST, PUT, DELETE, PATCH) đang được sử dụng trên nó.
Jpsy

0

Hãy xem xét một máy chủ có thông tin của người dùng, nhiệm vụ và điểm thưởng của họ.

  1. Người dùng và Điểm thưởng là tài nguyên
  2. Một điểm kết thúc có thể liên quan đến nhiều hơn một tài nguyên
  3. Điểm cuối có thể được mô tả bằng mô tả hoặc URL đầy đủ hoặc một phần

nhập mô tả hình ảnh ở đây

Nguồn: Điểm cuối API so với Tài nguyên


-1

1. Mô tả tài nguyên, Tài nguyên, hướng tới các thông tin được API trả về.

2. Điểm cuối và phương thức Điểm cuối cho biết cách bạn truy cập tài nguyên, trong khi phương thức chỉ ra các tương tác được phép (chẳng hạn như GET, POST hoặc DELETE) với tài nguyên.

Thông tin bổ sung: 3. Tham số Tham số là các tùy chọn bạn có thể vượt qua với điểm cuối (chẳng hạn như chỉ định định dạng phản hồi hoặc số tiền được trả về) để ảnh hưởng đến phản hồi.

4. Ví dụ yêu cầu Ví dụ yêu cầu bao gồm một yêu cầu mẫu sử dụng điểm cuối, hiển thị một số tham số được định cấu hình.

5. Ví dụ phản hồi và lược đồ Ví dụ phản hồi hiển thị một phản hồi mẫu từ ví dụ yêu cầu; lược đồ đáp ứng xác định tất cả các yếu tố có thể có trong phản hồi.

Nguồn- Liên kết tham khảo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.