我已经参考文档https://www.progress.com/documentation/sitefinity-cms/create-a-web-service为我的Sitefinity网站创建了Web服务,并且已将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"
}
code是HttpStatusCode,状态是HttpStatus,数据是API的实际结果。
有人可以帮我吗?
谢谢
Aiswarya
答案 0 :(得分:0)
到目前为止,还没有办法将OData响应转换为对象(例如,没有API)。
实现此功能的最干净方法是尝试使用response filter,它将解析响应,对其进行转换并将其发送到网络上。到此为止,您将被称为-您将使用Streams,因此您需要:
但是,这有点简化:
响应。过滤器内容已分块
因此,要有效地实现Response.Filter,只需要实现自定义流并处理Write()方法即可在编写响应时捕获响应输出。乍一看,这看起来非常简单-您可以在Write中捕获输出,对其进行转换,然后一次性写入转换后的内容。这确实适用于少量内容。但是您看到的问题是,输出是在小的缓冲区块中写入的(看起来少于16k),而不是在流中写入单个Write()语句,这对于ASP.NET将数据流式传输到其中非常有意义。 IIS以较小的块最大程度地减少了沿途的内存使用。