首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标头值: application/vnd.api+json

标头值: application/vnd.api+json
EN

Stack Overflow用户
提问于 2015-01-20 21:32:44
回答 5查看 70K关注 0票数 151

有谁能解释一下:

代码语言:javascript
复制
application/vnd.api+json

代码语言:javascript
复制
application/json
EN

Stack Overflow用户

发布于 2021-10-14 11:45:58

这称为、MIME类型、版本控制、或内容协商。当您开发REST时,您可能希望在将来添加该API的不同版本,例如v1、v2等.,我们的API的不同用户应该能够调用所需的版本。现在可以有不同的方法来解决这个API版本控制问题,比如URI版本控制、参数版本控制、Header版本控制或MIME版本控制。

让我们用一个例子来讨论MIME版本化

假设我们有一个REST响应的Person实体:

代码语言:javascript
复制
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;
   }

}

但是我们想要的是,我们的API调用者应该提到一个版本,并在此基础上,我们将与适当的人作出响应。下面是我们的RestController:

代码语言:javascript
复制
@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");
    }
}

现在,我使用不同的版本访问了我们的API,并从API中获得了适当的响应。请检查以下输出:

application/vnd.company.api-v1+json 请求第1版

application/vnd.company.api-v2+json 请求第2版

因此,我们可以看到如何使用这种MIME版本控制方法对REST进行版本化。不同的组织对API版本控制使用不同的方法。

票数 7
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28055526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档