Odata Routing для справочных операций, отсутствие документации - PullRequest
0 голосов
/ 17 октября 2018

У меня проблема с созданием и удалением ссылок, работающих с контроллером с использованием Odata 7.0.1

В соответствии с http://odata.github.io/WebApi/#03-01-routing-abstract следующие операторы должны автоматически создавать маршруты (раздел «Запросы, создание и удаление ссылок»))

HTTP POST и PUT для метода с именем CreateRef

Далее подпись метода на контроллере отображается как

// POST /odata/Products(1)/Supplier/$ref
public HttpResponseMessage CreateLink(int key, string navigationProperty, [FromBody] Uri link)

Для удалений это:

// DELETE /odata/Products(1)/Supplier/$ref
public HttpResponseMessage DeleteLink(int key, string navigationProperty, [FromBody] Uri link)

с шаблоном

HTTP DELETE DeleteRef

У меня есть тест интеграции клиента, и он генерирует ссылку в виде

DELETE http://localhost/Building(007c3552-43da-44c4-bf8f-b5221553c484)/UsageTypes/$ref?$id=UsageType(18)

, что мне нравится.

К сожалению, я всегда получаю ошибку маршрутизации, исключение WebRequestException "not found".

Я пробовал оба

[HttpDelete]
public async Task<IActionResult> DeleteRef(Guid key, String navigationProperty, [FromBody] Uri link) {
    return Ok();
}

и

[HttpDelete]
public async Task<IActionResult> DeleteLink(Guid key, String navigationProperty, [FromBody] Uri link) {
    return Ok();
}

Что я делаю не так?

Обратите внимание, что Odata в целом работает - у нас есть методы get, put и post для отдельных объектов, функций и действий, правильно сгенерированных для маршрутизации.На данный момент кажется, что только ссылки выходят из строя (это новая часть, которую мы сейчас запустили в производство для удаления старого API на основе REST).

...