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? Я пока не знаю... Кто-нибудь может мне помочь...

Другие вопросы по тегам