Изменить формат ответа веб-служб по умолчанию для Sitefinity - PullRequest
0 голосов
/ 17 мая 2019

Я создал веб-сервис для своего сайта Sitefinity со ссылкой на документ https://www.progress.com/documentation/sitefinity-cms/create-a-web-service, и я использовал OData для всех фильтров и т. Д.

Ниже приведен пример ответа, полученного от одного из веб-сервисов.

{
"@odata.context": " ",
"value": [
{
"Id": "aa981bde-a977-48db-a0ed-69b077e3fsdf",
"Title": "Define: Problem",
"Order": "2"
},
{
"Id": "9e346ada-dde9-4a0f-a025-2004932f4dfg",
"Title": "Pre-Planning",
"Order": "1"
}
]
}

Есть ли способ изменить формат ответа веб-служб Sitefinity. Я хотел бы получить ответ как:

{
"code": 200,
"data": "THE RESULT OF THE API",
"message": " ",
"status": "OK"
}

код - HttpStatusCode, статус - HttpStatus, данные - фактический результат API.

Может кто-нибудь, пожалуйста, помогите мне с этим.

Спасибо

Aiswarya

1 Ответ

0 голосов
/ 11 июня 2019

На данный момент нет способа где-то подключиться и преобразовать ответ OData как объект (например, без API).

Самый простой способ реализовать эту функцию - попробовать использовать фильтр ответов , который будет анализировать ответ, преобразовывать его и отправлять по проводам.В момент, когда вам звонят - вы будете работать с потоками, поэтому вам необходимо:

  1. Получить ответ в виде потока
  2. Разобрать его
  3. Изменитьэто
  4. Отправьте его обратно в JSON
  5. Запишите обратно в поток

Это, однако, немного упрощено:

Содержимое Response.Filter разбивается на куски

Таким образом, для эффективной реализации Response.Filter требуется только реализовать собственный поток и обработать метод Write () для захвата выходных данных Response по мере их записи.На первый взгляд это кажется очень простым - вы записываете вывод в Write, преобразуете его и записываете преобразованный контент за один проход.И это действительно работает для небольших объемов контента.Но вы видите, проблема в том, что выходные данные записываются небольшими кусочками буфера (чуть меньше 16 тыс.), А не просто одним оператором Write () в поток, что имеет смысл для ASP.NET направлять данные обратно вIIS небольшими порциями для минимизации использования памяти в пути.

...