可以使 OData 返回 CSV 或 URL 吗?

Posted

技术标签:

【中文标题】可以使 OData 返回 CSV 或 URL 吗?【英文标题】:Can OData be made to return CSV or URL? 【发布时间】:2014-07-08 22:37:49 【问题描述】:

我是 OData 新手,如果这是一个不好的问题,我很抱歉,但我找不到答案。

我有一堆 OData 表,我想为用户提供一个选项以将数据作为 CSV 文件获取。

现在我知道 OData 只支持 Atom 和 JSON,但有什么方法可以让它返回文件流或 URL?

如果直接来自 OData 的文件流是不可能的,我在想一个 URL 可以指向一个简单地返回文件流的 REST 服务(不是 OData)。

感谢任何想法或想法!

【问题讨论】:

【参考方案1】:

我不完全确定您为什么要使用 oData。但 oData 本质上意味着以 JSON/atom 标准格式发布任何类型的数据 - 而不是 CSV。

如果您可以控制 oData 源,则可以修改 oData 生产者以输出 CSV 文件流而不是 JSON/atom 文件。(但您将不再拥有真正的 oData 提要) 您还可以设置任何 oData 使用者(您可以在 odata.org 找到这些使用者)来读取您的 oData 源并将其显示为 CSV。

如果您选择服务器端解决方案(php/JSP/ASP 等),那么遍历请求的结果并在其间添加分隔符应该相当简单。

【讨论】:

你说得对,不幸的是,我不能选择 OData 或其他东西。如何让生产者返回文件流?可以在不违反 OData 规范的情况下做到这一点吗?我确实可以访问生产者/提供者,但我不想削弱协议的实现。是的,循环绝对是一种选择,但如果可能的话,我更希望在提供程序中进行修复。 正如我所说,这将不再是 OData 提供者。(因此,您肯定会通过将输出更改为 csv 来违反规范)事实上,修改 OData Producer 的好处可能是重用整个后端部分(尤其是整个 uri 请求语言和数据库连接)。如何修改这样的生产者很大程度上取决于您使用的库。 (我想这将是很多工作要做,而循环通过标准生产者的结果将是快速而肮脏的方式) 我最终做了简单的非违规解决方案。一个转换器,将 OData 对象转换为 CSV 格式的字符串,然后是一个 REST 服务,将字符串作为文件流返回。感谢您的建议!

以上是关于可以使 OData 返回 CSV 或 URL 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Sitefinity权限如何应用于oData Web服务?

可以使用 csv 文件在 url 中下载多个 zip 文件吗?

oData(开放数据协议)可以不应用,但不能不了解

OData:通配符(startswith)过滤 url 请求中的数字(ID)字段

在 .NET Core Web API for MongoDB 中使用 OData

Python 循环遍历 csv 文件中的 url 返回 \ufeffhttps://