有人可以解释之间的区别:
application/vnd.api+json
Run Code Online (Sandbox Code Playgroud)
和
application/json
Run Code Online (Sandbox Code Playgroud)
Nic*_*lay 28
如果您不确定,请使用application/json- 它是通用的MIME类型,只需要您返回的数据是格式良好的JSON.
的application/vnd.api+jsonMIME类型是使用(容易混淆的命名)保留用于通信"JSON API"协议.
此上下文中的"JSON API" 并不意味着任何基于HTTP和JSON的API.它是构建API 的框架,允许客户端获取和修改相互关联的实体.例如,博客应用程序可以实现符合"JSON API"规范的API,该规范允许在单个HTTP请求中获取给定作者的最后10篇文章,每篇文章的元数据和注释.
该规范特别定义:
文档必须至少包含以下顶级成员之一:
data:文档的"主要数据"errors:一组错误对象meta:包含非标准元信息的元对象.成员
data和errors不得在同一文件中共存.
小智 10
这称为MIME 类型版本控制或内容协商。当您开发 REST API 时,您可能希望将来添加该 API 的不同版本,例如 v1、v2 等...,并且我们 API 的不同用户应该能够调用所需的版本。现在可以采用不同的方法来解决此 API 版本控制问题,例如URI版本控制、参数版本控制、标头版本控制或MIME版本控制。
让我们通过一个例子来讨论MIME 版本控制。
假设我们的 REST API 响应有一个Person实体:
public class Person {
private String name;
private String email;
public Person() {
}
public Person(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Run Code Online (Sandbox Code Playgroud)
但我们想要的是 API 的调用者应该提及一个版本,并根据该版本我们将与适当的人员进行响应。下面是我们的 RestController :
@RestController
public class PersonController {
@GetMapping(path = "/person", produces = "application/vnd.company.api-v1+json")
public Person getPersonV1() {
return new Person("Mr. ABC", "abc@gmail.com");
}
@GetMapping(path = "/person", produces = "application/vnd.company.api-v2+json")
public Person getPersonV2() {
return new Person("Mr. XYZ", "xyz@gmail.com");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我使用不同版本访问我们的 API,并从 API 获得适当的响应。请检查下面的输出:
application/vnd.company.api-v1+json 请求版本 1
application/vnd.company.api-v2+json 请求版本 2
因此,我们可以看到如何使用这种 MIME 版本控制方法对 REST API 进行版本控制。不同的组织使用不同的 API 版本控制方法。
该多用途Internet邮件扩展(MIME)类型(或)媒体类型是一种标准化的方式来表示通过Internet传输文件的性质和格式。它在IETF RFC 6838中标准化。在互联网编号分配机构(IANA)负责保持所有正式的MIME类型的赛道的官方机构。
JSON API使用的媒体类型为application / vnd.api + json,并且已在IANA上正确注册。
API + JSON媒体类型用于提供JSON的不同API之间的互操作性。
它是根据“加厚JavaScript”客户端及其需求而考虑创建的,但并不特定于他们。因此,以vnd(供应商)为前缀。
在JSON API上添加更多点:
| 归档时间: |
|
| 查看次数: |
35536 次 |
| 最近记录: |