Параметр запроса simple.odata.client
У меня есть API веб-служб (с конечной точкой OData, называемой piperuns, использующей ODataController), которая принимает необязательную строку запроса (называемую projectNumber), например:
http://localhost:59636/piperuns?projectNumber=1
У меня есть клиент, основанный на Simple.OData.Client, и я не могу понять, как передать эту необязательную строку запроса... Я использую динамический синтаксис и могу получить piperuns (без параметра запроса), используя следующий синтаксис:
ODataFeedAnnotations annotations = new ODataFeedAnnotations();
ODataClient client = new ODataClient("http://localhost:59636/");
var x = ODataDynamic.Expression;
IEnumerable<dynamic> pipeRunsNext = await(Task<IEnumerable<Simple.OData.Client.ODataEntry>>)client
.For(x.piperuns)
.FindEntriesAsync(annotations.NextPageLink, annotations);
Но я не нашел никакой информации о том, как включить необязательный параметр строки запроса, если это необходимо?
Спасибо!
1 ответ
Для условий, которые включают свойства модели метаданных, вы должны использовать предложение Filter:
IEnumerable pipeRunsNext = await client
.For(x.piperuns)
.Filter(x.projectNumber == "1")
.FindEntriesAsync(annotations.NextPageLink, annotations);
Однако, если дополнительное предложение не связано с моделью, я бы использовал перегрузку Filter, которая принимает строку:
IEnumerable pipeRunsNext = await client
.For(x.piperuns)
.Filter("projectNumber == '1'")
.FindEntriesAsync(annotations.NextPageLink, annotations);
Теперь вы можете использовать QueryOptions
для передачи настраиваемых параметров запроса.
например
IEnumerable pipeRunsNext = await client
.For(x.piperuns)
.QueryOptions("projectNumber=1")
.FindEntriesAsync(annotations.NextPageLink, annotations);