Giá trị tiêu đề: application / vnd.api + json


101

Ai đó có thể giải thích sự khác biệt giữa:

application/vnd.api+json

application/json

Câu trả lời:


94

Loại phương tiện application/vnd.api+jsonđề cập đến API JSON. Bạn có thể đọc về nó rất chi tiết ở đây .

Nói tóm lại, JSON API là một API được khẳng định và có lý do:

… Đặc tả về cách một ứng dụng khách yêu cầu tìm nạp hoặc sửa đổi tài nguyên và cách máy chủ sẽ phản hồi lại những yêu cầu đó.


30
Sẽ thật tuyệt nếu một câu về tiền tố nhà cung cấp (`vnd. ') Được đưa vào câu trả lời này từ câu trả lời của @rmhartog.
Vasif

Tôi ở đây cụ thể vì tôi đang tìm kiếm lời giải thích vnd, mà bây giờ tôi biết là tiền tố của nhà cung cấp vì @Vasif. Một bản chỉnh sửa của bản gốc sẽ là tuyệt vời.
Kamuela Franco

68

Đầu tiên là một loại phương tiện cụ thể API. Tiền tố nhà cung cấp ( vnd.) cho biết rằng nó là tùy chỉnh cho nhà cung cấp này. Dấu +jsonchỉ ra rằng nó có thể được phân tích cú pháp thành JSON, nhưng loại phương tiện phải xác định thêm ngữ nghĩa ở đầu JSON.

Điều thứ hai chỉ có nghĩa là nội dung là JSON. Tuy nhiên, điều này nói chung không hữu ích lắm vì nó không xác định ý nghĩa của các giá trị JSON.

Điểm khởi đầu tốt để đọc về điều này sẽ là trên Wikipedia , nhưng để biết thêm chi tiết, bạn luôn có thể theo các liên kết đến các RFC tương ứng trên trang đó .


33

Nếu bạn không chắc chắn, hãy sử dụng application/json- đó là kiểu MIME chung chỉ yêu cầu dữ liệu bạn trả về là JSON được định dạng tốt .


Các application/vnd.api+jsonloại MIME được dành riêng cho giao tiếp bằng cách sử dụng (gây nhầm lẫn với tên) "JSON API" giao thức.

"JSON API" trong ngữ cảnh này không có nghĩa là bất kỳ API nào dựa trên HTTP và JSON. Nó cũng không phải là một API được chỉ định đầy đủ - thay vào đó nó là một khuôn khổ để xây dựng các API cho phép khách hàng tìm nạp và sửa đổi các thực thể có liên quan với nhau. Ví dụ: một ứng dụng blog có thể triển khai một API tuân theo đặc điểm kỹ thuật "JSON API", cho phép tìm nạp 10 bài báo cuối cùng của một tác giả nhất định, với siêu dữ liệu và nhận xét cho mỗi bài viết, trong một yêu cầu HTTP duy nhất.

Đặc điểm kỹ thuật xác định, cụ thể là:

  • cách thức cụ thể một yêu cầu nên được hình thành (tức là thông số URL nào kiểm soát việc sắp xếp và phân trang cũng như dữ liệu được đưa vào đầu ra);
  • cấu trúc cụ thể của tài liệu JSON trong phản hồi, ví dụ:

    Tài liệu PHẢI chứa ít nhất một trong các thành viên cấp cao nhất sau:

    • data: "dữ liệu chính" của tài liệu
    • errors: một mảng các đối tượng lỗi
    • meta: một đối tượng meta chứa thông tin meta không chuẩn.

    Các thành viên dataerrorsKHÔNG PHẢI cùng tồn tại trong cùng một tài liệu.


7

Các Multipurpose Internet Mail Extensions (MIME) loại (hoặc) loại phương tiện truyền thông là một cách tiêu chuẩn hóa để chỉ ra tính chất, định dạng của một tài liệu được chuyển qua internet. Nó được tiêu chuẩn hóa trong IETF RFC 6838 . Các số hiệu Internet (IANA) là cơ quan chính thức chịu trách nhiệm về việc theo dõi tất cả các loại MIME chính thức.

Loại phương tiện được API JSON sử dụng là application / vnd.api + json và nó đã được đăng ký chính xác với IANA.

Loại phương tiện API + JSON dành cho khả năng tương tác giữa các API khác nhau phân phát JSON.

Nó được tạo ra với sự cân nhắc từ các khách hàng "JavaScript dày" và nhu cầu của họ, nhưng không cụ thể cho họ. Vì vậy, tiền tố là vnd(nhà cung cấp).

Thêm một số điểm nữa trên API JSON:

  • JSON API là một đặc tả xác định một đặc tả api về cách một yêu cầu và phản hồi và nên như thế nào.
  • Cho phép chúng tôi tạo ra một cấu trúc được xác định rõ ràng (như tài nguyên - các mối quan hệ và các liên kết của nó, v.v.)
  • Chỉ định cách các API REST sẽ phản ứng với các hoạt động CRUD .
  • Cho phép khách hàng lưu vào bộ nhớ cache các câu trả lời.

-1

Nếu bạn cần thiết lập ứng dụng tiêu đề bên dưới / vnd.hmrc.1.0 + json

Sau đó, bạn nên đi với

Accept: application/vnd.hmrc.1.0+json

Sử dụng CUrl, bạn có thể chạy tập lệnh dưới dạng

$url="https://test-api.service.hmrc.gov.uk/hello/world";
$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => $url,
    CURLOPT_HTTPHEADER     => array('Accept: application/vnd.hmrc.1.0+json') 
);

curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);

Hy vọng nó giúp!!


2
Điều này không liên quan đến câu hỏi cả.
Christian
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.