REST là gì (bằng tiếng Anh đơn giản) [đã đóng]


84

Gần đây tôi đã trở nên thích làm quen với REST. Tôi đã thử đọc mục wiki trên REST , nhưng không có ích gì. Tôi thực sự sẽ đánh giá cao nếu ai đó có thể giải thích bằng tiếng Anh đơn giản (đó là không có biệt ngữ công nghệ không cần thiết )

  1. REST là gì
  2. Vị trí của nó trong hệ sinh thái kiến ​​trúc web
  3. Làm thế nào chặt chẽ (hoặc lỏng lẻo) nó được kết hợp với giao thức.
  4. Các lựa chọn thay thế cho REST là gì và REST so sánh với chúng như thế nào.

Tôi hiểu rằng có thể không thể trả lời điều này trong một hoặc hai đoạn, trong trường hợp đó các liên kết có liên quan sẽ được đánh giá cao.


6
Hãy thử điều này - tomayko.com/writings/rest-to-my-wife
Talonx

Tôi thấy điều này có nhiều thông tin, nhưng không quá chi tiết: ibm.com/developerworks/webservice/l
Library / ws

Tôi tự hỏi nếu câu hỏi này có thể được xem xét trả lời?
Gary Rowe

@GaryRowe Tôi đã đánh dấu một câu trả lời, đoán nó đã bị xóa vì một số lý do. Tôi không hiểu trang này.
Gaurav

1
Không có câu trả lời nào dưới đây sử dụng từ "idempotent." Bạn nên tìm kiếm nó: idempotency là một khía cạnh quan trọng của bất kỳ kiến ​​trúc RESTful nào.
Solomon chậm

Câu trả lời:


10

REST là gì (bằng tiếng Anh đơn giản)

Tiếng Anh đơn giản:

REpresentational: hành động nói hoặc hành động thay mặt ai đó.
Chuyển trạng thái : chuyển trạng thái.


Kỹ thuật:

  • chúng tôi không chuyển một đối tượng thực tế mà là biểu diễn của nó dưới dạng (ví dụ: xml / json / text để thể hiện bảng cơ sở dữ liệu).
  • Các REST để hiển thị API công khai qua internet để xử lý các hoạt động CRUD trên dữ liệu. REST tập trung vào việc truy cập các tài nguyên được đặt tên thông qua một giao diện nhất quán duy nhất.
  • REST được đại diện thông qua một số loại phương tiện truyền thông. Một số ví dụ về các loại phương tiện bao gồm XML, JSON và RDF.
  • REST là một kiểu kiến ​​trúc cho kiến trúc hướng tài nguyên (ROA) , không phải là thông số kỹ thuật hoặc tiêu chuẩn.
  • Phong cách kiến ​​trúc có nghĩa là nó là một khái niệm, lý thuyết (và cách nó thực hiện nó, tùy thuộc vào bạn)
  • Tất cả mọi thứ được xác định bởi điểm cuối duy nhất. tức là có một điểm cuối cho mỗi tài nguyên (dữ liệu).
  • Điểm cuối bao gồm tên miền với địa chỉ tài nguyên.

REST vs SOAP


43

REST là gì?

Chuyển trạng thai biểu hiện. Nó mô tả làm thế nào một hệ thống có thể giao tiếp trạng thái với một hệ thống khác. Một ví dụ sẽ là trạng thái của sản phẩm (tên, mô tả, v.v.) được biểu thị dưới dạng XML, JSON hoặc văn bản thuần túy. Ý tưởng tổng quát của nhà nước được gọi là một tài nguyên.

Nó chiếm vị trí nào trong một hệ sinh thái kiến ​​trúc web?

REST thường được liên kết với giao diện dịch vụ web vì HTTP là giao thức mạng phổ biến nhất. Trong mô hình 7 lớp, nó tồn tại ở lớp ứng dụng . Tuy nhiên, xem phần tiếp theo.

Làm thế nào chặt chẽ (hoặc lỏng lẻo) nó được kết hợp với giao thức?

REST không phải là HTTP. Nó sử dụng HTTP bởi vì ở dạng chung nhất REST tồn tại để hỗ trợ một máy trong việc ánh xạ khái niệm động từ chống lại một bộ danh từ tùy ý. HTTP chứa một tập hợp các động từ chung hữu ích (GET, PUT, PATCH, v.v.) có thể áp dụng cho các danh từ tùy ý được biểu thị dưới dạng URI bằng cách sử dụng HTTP, ví dụ GET http://example.org/ Productt (54 ).

Các lựa chọn thay thế cho REST là gì và REST so sánh với chúng như thế nào

Điều này giống như hỏi "Làm thế nào RESTful là cách tiếp cận của tôi?" Sử dụng danh sách sau đây (được tóm tắt từ Mô hình trưởng thành của Richardson như được mô tả bởi Martin Fowler ):

Cấp 0 - Đầm lầy của POX

Sử dụng POST cho mọi thứ (đọc, viết, xóa). Đây là SOAP, POX, RPI, v.v. Bạn chỉ đang sử dụng HTTP làm đường hầm cho giao thức của riêng mình. Bạn nhắm mục tiêu một điểm cuối duy nhất thực hiện mọi thứ dựa trên nội dung của nội dung yêu cầu.

Cấp 1 - Tài nguyên

Sử dụng POST cho mọi thứ. Nhắm mục tiêu nhiều điểm cuối được thiết kế để cung cấp thông tin về một điều cụ thể. Bạn vừa phát hiện ra tài nguyên.

Cấp độ 2 - Động từ HTTP

Sử dụng động từ HTTP chống lại tài nguyên. Bây giờ bạn đang NHẬN nó. POST là để tạo, PUT là ghi đè, TÙY CHỌN cho các hoạt động có sẵn, XÓA để xóa, tốt, xóa tài nguyên. Do việc sử dụng các động từ này, các mã trạng thái HTTP khác nhau bắt đầu trở nên phù hợp hơn (202 CHẤP NHẬN ai?).

Cấp độ 3 - Kiểm soát Hypermedia ( HATEOAS )

Tại thời điểm này, bạn thực hiện bước nhảy vọt cuối cùng và giới thiệu hypermedia như một cơ chế kiểm soát dòng chảy. Máy khách REST không cần có kiến ​​thức trước về cách tương tác với bất kỳ ứng dụng hoặc máy chủ cụ thể nào ngoài sự hiểu biết chung về hypermedia. Điều này có thể được truyền đạt trong HTTP thông qua trường tiêu đề Kiểu nội dung. Các định dạng văn bản bao gồm AtomPub và (ngắn gọn hơn) HAL , trong khi HyperAudio hoạt động tốt cho các luồng âm thanh (xem SoundCloud et al)


bạn nói "REST không phải là HTTP", nhưng Roy Fielding có vẻ khá cố định với ý tưởng rằng siêu văn bản là một yêu cầu, với toàn bộ thỏa thuận HATEOAS mà không có - theo anh ta - bạn không thực hiện REST "đúng". Trong khi siêu văn bản! = HTTP, tôi tự hỏi bạn thực sự có thể làm được bao nhiêu ngoài HTTP ...
Andres F.

Theo điều này ( roy.gbiv.com/untangled/2008/ Mạnh ) Roy Fielding đưa ra quan điểm rằng siêu văn bản, hoặc tập hợp con của nó, hypermedia, có thể được biểu thị bên ngoài HTML miễn là nó hỗ trợ liên kết một số loại.
Gary Rowe

3
HTTP hoạt động tốt với REST vì nó cung cấp các động từ được tiêu chuẩn hóa để làm việc với các URI đại diện cho các danh từ trong REST trong một giao thức không trạng thái. Lý tưởng. Tuy nhiên, trong luận án của mình ( ics.uci.edu/~fielding/pub/dissertation/rest_arch_style.htmlm ), ông lưu ý rằng "REST không hạn chế giao tiếp với một giao thức cụ thể, nhưng nó hạn chế giao diện giữa các thành phần và do đó phạm vi của các giả định tương tác và thực hiện có thể được thực hiện giữa các thành phần. " Do đó, việc triển khai FTP đầy đủ khó có thể là RESTful nếu không có quản lý trạng thái phía máy khách.
Gary Rowe

2
+1 cho liên kết Martin Fowler. Như thường lệ, Martin Fowler đã viết một bài báo mô tả một khái niệm theo cách rõ ràng và súc tích nhất có thể
Tom Carter

bạn bảo hiểm state transferkhông đại diện. hành động nói hoặc hành động thay mặt ai đó là đại diện cho cách nó hoạt động trong bối cảnh này?
Premraj

11

Mặc dù REST là tên viết tắt của Chuyển giao trạng thái đại diện, có thể dễ dàng hơn để xem xét ý tưởng thực hiện các hành động khác nhau thông qua giao diện hơi trực quan.

Ví dụ: một URL như http://www.mysite.com/Find SẢNt / 125 / có thể được hiểu là ai đó muốn thông tin về sản phẩm với id là 125.

Mặc dù REST thường được nghĩ đến theo HTTP, khái niệm này có thể được áp dụng cho các giao thức khác như được lưu ý trong tài liệu tham khảo Wikipedia.

Các ví dụ khác về REST có thể hữu ích:


2
Cảm ơn liên kết đến "Tìm hiểu REST: Hướng dẫn"! Đó là hướng dẫn đầu tiên tôi đọc để lại cho tôi cảm giác tôi đã học được điều gì đó cụ thể. Mọi thứ khác tôi đã đọc (bao gồm cả bài viết Wikipedia) chỉ mô tả REST theo những cách trừu tượng nhất, được bao quanh bởi thuật ngữ kỹ thuật.
Avian00

liên kết đầu tiên không hoạt động. Câu trả lời của bạn vẫn hữu ích !!
Nhiệt tình
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.