Управление версиями медиа-типов в OpenRasta - PullRequest
3 голосов
/ 23 марта 2012

Как правильно создавать версии медиа в openrasta?До этого момента в одном из наших остальных API-интерфейсов мы указывали пользовательские типы мультимедиа с номером версии в них:

application/vnd.company.Entity-v1+xml

В настоящее время все эти типы мультимедиа просто передаются в пользовательский кодек, который мы определили для удалениянекоторые из тегов по умолчанию и тегов ns, которые XmlSerializer вставляет при сериализации.В верхней части этого кодека у нас есть:

[MediaType("application/vnd.company.Entity-v1+xml")]

Теперь мы подошли к моменту, когда у нас есть клиенты, которым нужны пользовательские атрибуты и элементы в XML и, таким образом, мы создали новую сущность, которая обрабатывает эти атрибуты иэлементы, которые происходят от сущности.Теперь у нас есть задача переместить определенных клиентов в новую сущность (EntityV2), однако я не уверен, как справиться с этим в контексте OpenRasta, когда дело доходит до передачи этого нового типа сущности в обработчики.Вот что мы подумали до сих пор:

  • Добавьте еще один метод POST в наш обработчик для обработки производного типа
  • Создайте совершенно новый URL для обработки новой сущности
  • Создайте новый тип мультимедиа и затем направьте запросы каким-либо образом новому обработчику.Это будет наибольшим усилием, так как мы пытаемся повторно использовать тот же обработчик с небольшим количеством логики принятия решения, чтобы определить, что нужно сделать с новыми элементами / атрибутами.

Любой совет будет оченьоценили!

1 Ответ

0 голосов
/ 28 марта 2012

Я - нуб OpenRasta, но я думаю, что наилучшим подходом может быть использование одного и того же обработчика для обеих версий запросов и просто введение нового кодека для новых версий сущности.

Я считаю, что если вы создаете новый кодек и украшаете его [MediaType("application/vnd.company.Entity-v2+xml")], он должен использовать этот кодек для десериализации запроса вместо кодека v1. Согласование содержимого OR должно позаботиться об использовании правильного кодека, чтобы ваш обработчик не изменился.

Это зависит от того, могут ли ваши клиенты использовать HTTP-заголовок «Принять», чтобы указать, какую версию сущности они используют. Если это не так, вы все равно можете создать новый URL и просто настроить его с помощью существующего обработчика и нового кодека.

Имеет смысл?

...