假设我已经阅读了大量有关版本控制RESTful API的信息,并决定不通过URI进行版本控制,而是使用媒体类型(在请求接受标头中的格式和模式):
那么,如何实现WCF服务或Web API服务来处理在URI中定义请求资源,在接受标头中定义格式(例如application/json)和模式/版本(例如player-v2)的请求?
WCF允许我基于URI路由,但不能基于标头路由。因此,我无法正确路由。
Web API允许我定义自定义mediatypeformatters,路由请求的格式,但不能定义模式(例如返回类型PlayerV1或PlayerV2)。
我希望实现一个服务(使用WCF或Web API),为此请求(伪代码):
返回一个以json格式表示的PlayerV1实体。
对于此请求:
那么,如何实现WCF服务或Web API服务来处理在URI中定义请求资源,在接受标头中定义格式(例如application/json)和模式/版本(例如player-v2)的请求?
WCF允许我基于URI路由,但不能基于标头路由。因此,我无法正确路由。
Web API允许我定义自定义mediatypeformatters,路由请求的格式,但不能定义模式(例如返回类型PlayerV1或PlayerV2)。
我希望实现一个服务(使用WCF或Web API),为此请求(伪代码):
api.myservice.com/players/123 Accept format=application/json; schema=player-v1
返回一个以json格式表示的PlayerV1实体。
对于此请求:
api.myservice.com/players/123 Accept format=application/json; schema=player-v2
以json格式返回PlayerV2实体。
如何实现此功能?
编辑:为了澄清我为什么想使用内容协商来处理版本,请参见这里:REST API设计:将“类型”放入“内容类型”中。
/api/1.2.3/cars/123
。 - Aliostad