2012-11-08 27 views
8

Tôi đang thiết kế một API RESTful và trong một nỗ lực để được mô tả và làm tài liệu hướng dẫn rõ ràng hơn tôi muốn tuyên bố tiêu đề http content-type của tôi như sau:Đang sử dụng tùy chỉnh json nội dung loại một ý tưởng tốt

Content-Type: application/vnd.mycorp.mydatatype+json 

nơi mycorp là một định danh duy nhất cho công ty của tôi và mydatatype là duy nhất cho từng loại dữ liệu. Một ví dụ sẽ là:

Content-Type: application/vnd.ford.car+json 

{ 
"manufactured_year": 2000 
, "color": "blue" 
, "hp": 160 
, "model" "Focus" 
, "type": "sedan" 
} 

Loại nội dung này sẽ được yêu cầu để POST hợp lệ và sẽ được gửi như một phần của phản hồi. Dường như với tôi như một cách tốt đẹp để xác định các quy tắc cho những gì nên ở bên trong tải trọng.

Tôi dường như không thể tìm được nguồn thông tin tốt về việc đây có phải là ý tưởng hay hay thậm chí nó được các tiêu chuẩn IETF cho phép.

Vì vậy, câu hỏi là: Điều gì là khả thi hơn, ứng dụng/vnd.mycorp.mydatatype + json hoặc chỉ ứng dụng/json?

Trả lời

4

Được phép, chắc chắn. Cho dù đó là một ý tưởng hay là một câu chuyện khác.

Quy tắc chung của tôi là định dạng dữ liệu chính hữu ích trên nhiều thứ, cần được xác định riêng và bạn cần phải tương thích với nhiều ứng dụng, chắc chắn cung cấp cho nó loại phương tiện.

Tuy nhiên, nếu đó chỉ là một thông báo trong API của bạn trong số rất nhiều và nó chỉ tốt cho một tài nguyên (hoặc một loại tài nguyên ")", chỉ cần sử dụng ứng dụng/json.

YMMV, tất nhiên.

+0

Đó là một điểm tốt. Câu hỏi lớn là tất nhiên "datatype chính" là gì và cái gì không. Tôi có một kiểu dữ liệu được định nghĩa rõ ràng bởi tài liệu của tôi ... nhưng đó luôn là trường hợp với các API RPC và tôi hiếm khi tìm thấy những người sử dụng phương thức này để biểu thị các kiểu dữ liệu của chúng. Tôi tự hỏi nếu đó là bởi vì đây không phải là một cách tốt để làm điều đó hoặc bởi vì những người triển khai API thường không nghĩ về điều này. – gardarh

5

Câu hỏi liên quan chặt chẽ đến REST API phiên bản của bạn.

Loại nội dung được sử dụng để, tốt, xác định loại nội dung. Nếu bạn sử dụng một tiêu chuẩn loại nội dung như

application/json 

anh chị nói với khách hàng rằng thông điệp là ở định dạng JSON. Điều này là đủ cho tất cả các ứng dụng web không phiên bản API của họ hoặc chỉ hỗ trợ phiên bản mới nhất. Nếu bạn định sử dụng các phiên bản API khác nhau, tiêu chuẩn loại nội dung không đủ. Hãy xem xét kịch bản sau đây:

Hãy ví dụ của bạn là phiên bản 1 của thông điệp

Content-Type: application/vnd.ford.carV1+json 

{ 
"manufactured_year": 2000 
, "color": "blue" 
, "hp": 160 
, "model" "Focus" 
, "type": "sedan" 
} 

Tại một số điểm bạn quyết định muốn đại diện cho màu sắc sử dụng mã thập lục phân. Do đó, bạn tạo phiên bản 2 của loại

Content-Type: application/vnd.ford.carV2+json 

{ 
"manufactured_year": 2000 
, "color": "0000FF" 
, "hp": 160 
, "model" "Focus" 
, "type": "sedan" 
} 

Khi khách hàng yêu cầu xe xác định loại nội dung chính xác, bao gồm phiên bản. Điều này cho ứng dụng biết liệu gửi màu như mã hex hay tên.

Đây là phiên bản đại diện của tài nguyên.Cách thay thế để hỗ trợ phiên bản trình bày tài nguyên là thêm phiên bản làm tiêu đề tùy chỉnh (trong khi vẫn giữ tiêu chuẩn kiểu nội dung)

Content-Type: application/json 
Message-Version: 1.0 
Các vấn đề liên quan