2014-12-10 33 views
13

Tôi đang sử dụng REST dữ liệu Spring, hỗ trợ HATEOAS. Tôi mới vào mô hình này.Ý nghĩa và cách sử dụng "_embedded" trong HATEOAS

Trong GET câu trả lời từ dịch vụ web RESTful của tôi Tôi thường nhận được kết quả bên trong một nút có tên _embedded.

Tôi tự hỏi: nút _embedded là gì? Là một phần của đặc tả REST? Hoặc một phần của đặc tả HATEOAS? Hoặc là nó cụ thể cho việc thực hiện mùa xuân của họ?

Đây là một ví dụ về kết quả JSON cho GET http://localhost:8080/mywebservice/features:

{ 
    "_links": 
    { 
     "search": { "href": "http://localhost:8080/mywebservice/features/search" } 
    }, 
    "_embedded": 
    { 
     "features": 
     [ 
      { 
       "feature": "GROUND", 
       "name": "Terreno", 
       "data_type": "String", 
       "_links": 
       { 
        "self" : { "href": "http://localhost:8080/mywebservice/features/GROUND" }, 
        "values": { "href": "http://localhost:8080/mywebservice/features/GROUND } 
       } 
      }, 

      ... 

     ] 
    } 
} 

tôi nhận thấy rằng tôi gần như luôn luôn có _embedded nút trong phản ứng: nếu tôi yêu cầu một bộ sưu tập, nhưng ngay cả khi yêu cầu một nguồn tài nguyên duy nhất bằng cách tìm kiếm (ví dụ: GET http://localhost:8080/mywebservice/persons/search/[email protected]@.com).

Tôi không nhận được _embedded nút chỉ khi yêu cầu dành cho một tài nguyên cụ thể, ví dụ: khi thực hiện GET http://localhost:8080/mywebservice/features/GROUND.

Trả lời

14

Không có thông số REST cũng như HATEOAS. Cả hai chỉ là khái niệm, hoặc phong cách kiến ​​trúc, nếu bạn muốn. _embedded là một phần của HAL format.

Nó được dự định để nhúng (sic!) Tài nguyên, nếu không chỉ URI của họ sẽ được trả lại. Ví dụ: GET http://localhost:8080/mywebservice/features được cho là chỉ trả về danh sách các URI, như http://localhost:8080/mywebservice/features/GROUND và bạn sẽ phải tự tải từng đơn Feature nếu cần. Bằng cách sử dụng _embedded tất cả các tài nguyên Feature được nhúng vào phản hồi, do đó bạn không phải tải chúng một cách riêng biệt.

Các vấn đề liên quan