1,前提
今天在解决excel导出的bug时,因为导出接口查询参数较多,所以把原来的get请求接口修改为post请求
原代码:
修改后:
2,修改后
postman请求正常,然后让前端对接口进行同步修改,前端大佬看了一会,就来找我,
说:这个前端不用动,后端改改逻辑就好。
我:如果进入了逻辑代码里面,那后端可以改,但是现在是请求都没有进入,参数无法正常接收。
他看了我postman的参数接收方式(针对原代码的请求)
原来的
修改后
后端参数就可以正常接收了
3,讨论
我:为什么不能用post请求?
他:post请求是返回文件二进制流,get请求是下载路径。
我:是这样吗?保持怀疑!!!
最后说明一下,不管是get请求还是post请求,后端导出接口都是返回文件的二进制流,这是毋庸置疑的,当查询参数较多的时候,建议使用post,当查询参数较少,使用get请求更好。但是对于前端而言,post请求和get请求会对他们影响较多,get请求的话,前端直接location.href=/url?param=${encodeURI(JSON.stringify(queryObj))}
就可以达到下载文件的效果,但是post请求的话,前端需要写的代码可能要多点,详细代码可以参考https://blog.csdn.net/ScholarTang/article/details/107976642