2

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

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

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

或者我是否为可以通过我的书店 REST API 发布/检索的每种类型的数据创建一个内容类型?

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

1 回答 1

1

为每个数据描述内容类型似乎是最安全的解决方案。如果您以后出于某些原因想符合 HATEOAS,那会更容易。另一方面,对所有内容都使用一种内容类型并没有多大意义。内容类型描述了特定数据的类型。

关于版本控制,您可以通过三种不同的方式将版本控制添加到您的 API。首先,您可以在 URI 中添加版本号,这是一种简单的方法:

/api/v1/users

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

application/vnd.acme.user-v1+xml

或者您也可以在 Accept 标头中使用限定符,这样您就不会触及您的内容类型:

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

这真的取决于你。第一个解决方案很简单,但不像其他两个解决方案那样 RESTful。但这些解决方案需要更聪明的客户。

于 2012-08-15T17:41:40.303 回答