2016-05-26 17 views
6

Khi sử dụng dữ liệu mùa xuân cho REST API của tôi, câu trả lời trả về có hiện nay bao gồm các lĩnh vực _links:Làm thế nào để loại bỏ các phần tử hypermedia khỏi các biểu diễn được tạo ra bởi Spring Data REST?

{ 
    "_embedded": { 
    "users": [ 
    { 
     "imageUrl": "some_image_url", 
     "name": "some name", 
     "id": "57420b2a0d31bb6cef4ee8e9", 
     "_links": { 
     "self": { 
      "href": "http://localhost:8080/users/57420b2a0d31bb6cef4ee8e9" 
     }, 
     "user": { 
      "href": "http://localhost:8080/users/57420b2a0d31bb6cef4ee8e9{?projection}", 
      "templated": true 
     } 
     } 
    }, 
... 

Có cách nào để tạo ra sản lượng, chẳng hạn rằng trường _links ẩn? ví dụ .:

{ 
    "_embedded": { 
    "users": [ 
    { 
     "imageUrl": "some_image_url", 
     "name": "some name", 
     "id": "57420b2a0d31bb6cef4ee8e9", 
    }, 
... 

Tôi thấy rằng vì tôi phơi bày bộ lĩnh vực id, _links là không thực sự cần thiết, và chủ yếu chỉ lộn xộn lên phản ứng của tôi.

+0

Khách hàng phải biết tìm người dùng ở đâu mà không có liên kết? –

+0

@OliverGierke Tôi đã phơi bày trường 'id' trong phản hồi. –

+0

Khách hàng làm gì với một Chuỗi đơn giản không phải là một URI? –

Trả lời

12

Không có. Hypermedia là một đặc điểm cơ bản của REST API và Spring Data REST sử dụng nó rất nhiều để cho phép bạn xây dựng các máy khách có thể sử dụng các liên kết có trong các phản hồi để điều hướng đến các tài nguyên liên quan. Tất nhiên bạn có thể làm hỏng khách hàng của bạn để không sử dụng thông tin đó nhưng điều đó sẽ dẫn đến một khớp nối chặt chẽ hơn nhiều (vì bạn không thể thay đổi URI ở phía máy chủ nữa, khách hàng của bạn hy vọng sẽ nói chuyện với một chuyên dụng máy chủ trong khi với hypermedia bạn chỉ có thể trỏ nó đến một máy chủ khác nhau, vv).

Ngược lại với nhiều khung công tác REST tự xưng khác, một trong những khía cạnh chính của thiết kế khung là tôn trọng các nguyên tắc cơ bản trong REST và tận dụng chúng một cách rõ ràng. Hoặc ít nhất, không tạo ra các ưu đãi để dễ dàng phá vỡ chúng. Điều này được thể hiện rõ ràng trong reference documentation và trên project website. Tìm hiểu thêm về các quyết định thiết kế chính trong this presentation on Spring Data RESTthis one on Domain-Driven Design & REST.

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