2012-06-11 26 views
6

Việc xác định phép chiếu cho truy vấn REST GET có vi phạm nguyên tắc REST và/hoặc đó có phải là thực hành tốt không ??
Hãy xem xét api như /person?fields=fname,lname, address, điều này có thể do người đó là người mẫu lớn và yêu cầu hiện tại của tôi chỉ yêu cầu giá trị của các trường nhất định (nói rằng tôi đang tạo lưới UI)Chỉ định phép chiếu cho truy vấn REST GET

+0

Đó là một thực hành rất tốt, nó tốt hơn nhiều so với việc gửi lại các đối tượng khổng lồ trên mọi yêu cầu. –

Trả lời

3

Hoàn toàn ổn định nếu tài nguyên hiện tại không hỗ trợ những gì bạn muốn. Đó chính là cách REST hoạt động.

Vì vậy, trong trường hợp của bạn, định nghĩa URI /person?fields=fname,lname, address hoàn toàn hợp lệ.

Lưu ý rằng cấu trúc URI không quan trọng, bạn phải cung cấp liên kết tới khách hàng ở nơi bạn mô tả mẫu URI và các biến. Vì vậy, bạn phải trả lại một cái gì đó liên kết như thế này (hư cấu dạng JSON hypermedia):

{ 
    "_links": { 
     "/meta/person/list": { 
      "href": "/person{?fields}", 
      "vars": { 
       "fields": { 
        "required": false, 
        "composition": [ 
         "fname": { 
          "meta": "/meta/person/fname" 
         }, 
         "lname": { 
          "meta": "/meta/person/lname" 
         }, 
         "address": { 
          "meta": "/meta/person/address", 
          "alternatives": { 
           "href": "/locations", 
           "meta": "/meta/locations" 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 

Trong nơi /meta mô tả các loại và nhãn của mỗi params:

GET/meta/người/fname

{ 
    "type": "string", 
    "label": "First name", 
    "_links": { 
     "self": { 
      "href": "/meta/person/fname" 
     } 
    } 
} 

ofc. di chuyển đầu tiên của bạn với khách hàng nên nhận được toàn bộ meta hoặc ít nhất là các phần được sử dụng thường xuyên nhất của nó. Bằng cách xử lý liên kết, máy khách phải có khả năng hiểu mô tả meta và định dạng JSON siêu văn bản đặc biệt này. Cấu trúc URI hoàn toàn không liên quan, nó chỉ nên sử dụng meta để hiểu liên kết là gì và cách sử dụng nó.

Rất tiếc, chúng tôi không có chuẩn ở thời điểm hiện tại về cách mô tả các liên kết trong phản hồi JSON. Có các định dạng siêu văn bản như Hydra + Json-LD, HAL, HyperSchema, v.v ... Nhưng ngoại lệ. không ai trong số họ là một tiêu chuẩn được nêu ra. (Có thể là từ vựng Hydra RDF là gần nhất để trở thành một, nhưng nó chắc chắn không phải là sản phẩm đã sẵn sàng. Json-LD đã là một cách tiêu chuẩn để đại diện cho RDF.)

Bây giờ nếu nó được mã hóa cứng vào khách hàng của bạn cách xây dựng URI và ý nghĩa của nó, thì đó không phải là một máy khách REST, vì loại dịch vụ/khách hàng này vi phạm ràng buộc của uniform interface/HATEOAS của REST. Ofc. ngày nay ppl. gọi mọi thứ như REST, RESTful, API, ngay cả khi họ chỉ biết nhiều đến Jon Snow về chủ đề này. Btw. không có bi kịch nếu bạn không muốn triển khai ứng dụng web của mình theo cách REST, nó chỉ phụ thuộc vào yêu cầu của bạn. Ví dụ: nếu ứng dụng của bạn sẽ không có nhiều người dùng và nhà phát triển bên thứ ba thì rất có thể bạn sẽ không chọn con đường nào.

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