Supongo que he leído mucho sobre el control de versiones de una API relajante, y decidí no versionar el servicio a través de la uri, pero usando mediatypes (formato y esquema en el encabezado request accept):Implementando el versionado de una API RESTful con WCF o ASP.Net Web Api
¿Cuál sería la mejor manera de implementar un servicio wcf o un servicio web api para atender solicitudes que definan el recurso solicitado en el uri, el formato (por ejemplo, application/json) y el esquema/versión (por ejemplo, jugador-v2) en el encabezado de aceptar?
WCF me permite enrutar en función del uri, pero no en función de los encabezados. Entonces no puedo rutear apropiadamente.
Web Api me permite definir formatos de medios personalizados, enrutamiento para el formato solicitado, pero no el esquema (por ejemplo, tipo de retorno PlayerV1 o PlayerV2).
me gustaría implementar un servicio (ya sea con WCF o Web API) que, para esta solicitud (Pseudo código):
api.myservice.com/players/123 Accept format=application/json; schema=player-v1
devuelve una entidad PlayerV1, en formato JSON
y para esta solicitud:
api.myservice.com/players/123 Accept format=application/json; schema=player-v2
devuelve una entidad PlayerV2, en formato json.
¿Algún consejo sobre cómo implementar esto?
EDIT: Para aclarar por qué quiero usar la negociación de contenido para tratar las versiones, consulte aquí: REST API Design: Put the “Type” in “Content-Type”.
No comencemos un debate sobre qué camino es mejor (versión en URI o no) ya que ese no es el punto aquí. Podría reformular la pregunta: "Implementar la negociación de contenido en una API RESTful ...", el desafío de la implementación seguiría siendo el mismo, ¿no? – codeclash
@cardinal que he actualizado. – Aliostad
El proveedor de valor me da acceso al esquema solicitado, pero en cualquier caso el tipo de devolución en su ejemplo sería Player, mientras que en realidad tendría que devolver un Player o PlayerV2, ... dependiendo del esquema solicitado. ¿Me estoy perdiendo de algo? – codeclash