繁体   English   中英

更改Sitefinity默认Web服务的响应格式

[英]Change the response format of Sitefinity default web services

我已经为我的Sitefinity网站创建了Web服务,参考文档https://www.progress.com/documentation/sitefinity-cms/create-a-web-service ,我已经使用OData来选择所有过滤器等。

以下是我从其中一个Web服务获得的示例响应。

{
"@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 Web服务的响应格式。 我想得到一个像:

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

代码是HttpStatusCode,状态是HttpStatus,数据是API的实际结果。

任何人都可以帮我这个。

谢谢,

Aiswarya

到目前为止,没有办法在某处连接并将OData响应转换为对象(例如,没有API)。

实现此功能的最简洁方法是尝试使用响应过滤器 ,该过滤器将解析响应,转换响应并将其发送到线路。 在您被调用时 - 您将使用Streams,因此您需要:

  1. 以流形式获取响应
  2. 解析它
  3. 更改
  4. 将它重新塞回JSON
  5. 将其写回流中

然而,这有点简化:

Response.Filter内容被分块

因此,实现Response.Filter实际上只需要实现自定义流并处理Write()方法以捕获响应输出。 乍一看,这看起来很简单 - 你在Write中捕获输出,转换它并在一次传递中写出转换后的内容。 这确实适用于少量内容。 但是你看,问题是输出是用小缓冲区块(它看起来略低于16k)而不是只有一个Write()语句写入流中,这对于ASP.NET将数据流回到较小的块中的IIS可以最大限度地减少路由中的内存使用量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM