后端已经实现了从数据库读取数据然后生成word的功能,问题是如何让前端能下载这个word
而且这个word是动态生成的,每次访问得到的数据都不一样。
目前的形式是所有的数据都由后端生成json传给前端
后端已经实现了从数据库读取数据然后生成word的功能,问题是如何让前端能下载这个word
而且这个word是动态生成的,每次访问得到的数据都不一样。
目前的形式是所有的数据都由后端生成json传给前端
这个问题分两部分,设计和实现。
设计上,我觉得有必要讲下 RESTful 里很重要的一点
.json
后缀我们经常设计出这样的接口:
/api/users.json
/api/users/1.json
实际上这样是不规范的。
也就是说,我的 /api/users/1
应该只表示我想要访问 id=1
的 User
,而不指定服务端会返回给我 json
还是别的格式比如 xml
。
Accept
和 Content-Type
headers 来指定资源的表现状态。上述接口规范的形式应该是:
URL: /api/users/1
Headers:
Accept: application/json
所以,设计你要的这个接口,它的 URL 应该和前端请求这份数据 json 的 URL 相同,而在 header 中指定 Accept 为 word 文档的 MIME Type。
比如你们的系统已经有很多接口,全部改成规范的很麻烦,那么还有一种差不多 RESTful 的设计方案。
设计如下接口:
POST /api/xxx/docs
注意要用 POST,原因自己体会下应该能明白。
第二点,实现上,用库。
如果生成操作比较耗时,可以通过异步处理, 即把生成的文件以用户为单位保存成列表,然后在生成功能时以某种方式,(可以是websocket,也可以是轮询)等处理完了,弹出文件下载列表。至于服务器端成的文件,可以通过servlet或者nginx等直接提供下载即可。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
给个提示性思路,我没有试过。
建议是第一种方案,技术都成熟,而且如果word特别大的化,前端抗不住。