在休息时,创建一个单一的内容类型,或有单独的内容类型,每个资源的代表性?(In REST, crea

2019-07-30 22:24发布

如果我要遵循使用自定义内容类型为我的REST API的做法,我应该在定义一个自定义内容类型为我的整个项目或定义自定义内容类型为每个资源表示(什么是发送到/回我的REST API)在我的项目中使用?

也就是说,如果我建立一个“书店” REST API,其中服务说的都是在命名空间com.mycompany.mybookstoreapp,做我创建一个单一的内容类型:

Content-Type: application/com.mycompany.mybookstoreapp+xml

或者,我创建每种类型的数据可以发布/通过我的书店的REST API retreived的内容类型?

Content-Type: application/com.mycompany.mybookstoreapp.user+xml
Content-Type: application/com.mycompany.mybookstoreapp.order+xml
Content-Type: application/com.mycompany.mybookstoreapp.book+xml

Answer 1:

描述每个数据的内容类型似乎是最安全的解决方案。 如果你想成为HATEOAS后来因为某些原因兼容,它会更容易。 在另一只手,它没有多大意义,对这些东西有一个内容类型。 内容类型描述了一个特定的数据类型。

关于版本,您可以在三种不同的方式添加版本到您的API。 首先,你可以在你的URI添加的版本号,这是最简单的方法:

/api/v1/users

或者你可以使用你的新的内容类型:

application/vnd.acme.user-v1+xml

或者,你也可以使用一个限定在接受头,这样你不碰你的内容类型:

application/vnd.acme.user+xml;v=1

这真的取决于你。 第一个解决方案是容易的,但比其他两种解决方案少REST风格。 但是,这些解决方案需要更多的智能客户端。



文章来源: In REST, create a single content type or have seperate content types for each resource representation?
标签: rest