Jaydata ServiceOperation и метод действия POST игнорируются
Я работаю над выпуском Jaydata 1.3.6 (с OData V3), и у меня возникла проблема с Service Operations и Actions, все они представлены с помощью метода GET вместо POST...
Я должен изменить GET на POST из-за моего запроса $filter, который слишком велик для запроса GET (ограничить длину строки).
Я перепробовал много возможностей, таких как:
$data.EntityContext.extend('Default.Container', {
'Items': { type: $data.EntitySet, elementType: Entities.Item, method: 'POST' },
'GetItemsAction': { type: $data.ServiceAction, returnType: $data.Queryable, elementType: 'Entities.Item', 'EntitySet': 'Item', params: [] },
'GetItemsOperation': { type: $data.ServiceOperation, returnType: $data.Queryable, elementType: 'Entities.Item', 'EntitySet': 'Item', params: [], method: 'POST' }
});
Действие службы подразумевает, что действие метода по умолчанию имеет значение POST, но оно всегда в GET, даже если я вручную устанавливаю метод для ServiceOperation, параметр метода игнорируется...
Я установил.Net OData Controller с моими методами в POST:
[EnableQuery]
public IQueryable<Item> Get(ODataQueryOptions<Item> options)
{
return this._itemRepository.GetAll();
}
[HttpPost]
[EnableQuery]
public IQueryable<Item> GetItemsAction(ODataQueryOptions<Item> options)
{
return this._itemRepository.GetAll();
}
[HttpPost]
[EnableQuery]
public IQueryable<Item> GetItemsOperation(ODataQueryOptions<Item> options)
{
return this._itemRepository.GetAll();
}
Есть ли проблема с реализацией Jaydata?
Спасибо за ваши советы!
1 ответ
Я нашел решение, чтобы Service Action и Service Operation проходили методом POST:
Когда я увидел это: http://jaydata.org/blog/odata-cookbook-with-jaydata
Я видел, что динамическое создание контекста игнорирует метод POST, когда он анализирует метаданные Edm $ в первый раз...
Первое, что нужно сделать, это статическая инициализация контекста следующим образом:
var context = new NortwindContext({
name: 'oData',
oDataServiceHost: 'http://localhost:50538/examples/Northwind.svc'
});
context.onReady(function () {
// work with your data
});
Но Jaydata не POST $filter и другие соглашения $top запроса, это всегда в строке запроса GET.
Как решить проблему максимальной длины GET в Jaydata с OData v3? Я пока не знаю... Кто-нибудь может мне помочь...