2014-11-10 2 views
0

Я обновился до OData V4, и я понял, что соглашения о маршрутизации изменились. Таким образом, вместоУсловные обозначения веб-API 2.2 и OData V4

http://somesite.com/api/products/1 

Вы бы следующие

http://somesite.com/api/products(1) 

Теперь это хорошо для новых приложений, идти вперед, но мы должны поддерживать традиционные URL, для устаревших приложений. Есть ли способ поддерживать как url, так и традиционный URL-адрес?

Если у меня есть следующий пример

[ODataRoute("{key}")] 
public async Task<IHttpActionResult> Put([FromODataUri] string key, Dealer dealer) 
{ 
    // some logic code here   
} 

Я получаю следующую ошибку

The path template '{key}' on the action 'Put' in controller 'Dealers' is not a valid OData path template. Resource not found for the segment '{key}' 
+0

Вы пробовали '[ODataRoute (" Продукты/{key} ")]'? –

+0

Ya у меня - все тот же выпуск. – TYRONEMICHAEL

+0

В соглашении URL OData поддерживается только http://somesite.com/api/products(1). Я не уверен, что «http://somesite.com/api/products/1» - это то, что вы можете с предыдущей версией OData. Вы упомянули о том, что вы «обновляете» до OData V4, обновляетесь ли вы от старой версии OData или чистого веб-API? – QianLi

ответ

1

При переключении на OData v4 из более ранней версии, Есть несколько разбивающихся изменений .. т.е., например, , клиенты v3 не смогут использовать ответ, возвращаемый службой v4 ... Следовательно, uri может быть наименьшим из ваших проблем.

Если вы не знаете, для поддержки существующих клиентов .. тогда единственным вариантом будет размещение двух версий одной и той же службы.

Смежные вопросы