繁体   English   中英

使用AngularJS从Spring REST API获取数据并将其另存为Excel文件流的正确方法?

[英]Proper way to get data from Spring REST API and save as Excel file stream using AngularJS?

我们有一些Spring REST API,它们从后端数据库中获取数据,并将它们作为JSON数据返回给客户端。 AngularJS是我们现在正在使用的客户端JavaScript框架。 现在我们需要将一些数据另存为Excel文件,以便客户下载。 该文件需要作为流下载,因为某些文件可能很大。 有没有解决问题的优雅方法?

我假设您有一个可生成JSON报告的终结点。 让我们将其命名为/api/reports/report1 所以这样的请求:

GET /api/reports/report1 HTTP/1.1
Accept: application/json

以JSON格式返回报告:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8

[
    {
        "fullName": "John Doe",
        "annualIncome": 100000
    },
    (...)
]

选项1

扩展端点以生成application/vnd.ms-excel 因此对话将如下所示:

GET /api/reports/report1 HTTP/1.1
Accept: application/vnd.ms-excel

HTTP/1.1 200 OK
Content-Type: application/vnd.ms-excel

(... binary excel data ...)

如果您想将下载内容嵌入为HTML链接,则此方法将无法正常工作,因为此时无法设置Accept标头。

选项2

生成下载链接。 这将适用于大量下载(如您在此处提到的情况)。 不过,在这种情况下,您将需要一个不同的URL来表示报告的Excel(例如/api/reports/report1/excel/api/reports/report1?format=excel )。 或者,您可以使用选项1并将Excel设置为默认的哑元(当请求中的Accept标头设置为*/*时)。

实作

  • 您可以使用Apache POI生成EXCEL文件-请参阅有关使用Java创建XLS的SO线程
  • 要下载角度文件,请参阅

附加参考

暂无
暂无

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

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