Kratos 实现文件下载功能

79

由于kratos的接口都是定义在proto文件中的,通过make service来生成代码,这样生成的代码没有办法实现文件下载,所以一般都会自定义http请求来实现,但是这样的话,定义的middleware就全都用不了,自定义的http请求不会走middleware。

参照生成出来的pb文件,定义一个下载文件的接口

http注册路由

实现handle方法

主要就是handle方法,把get的参数转成结构体,传入到srv.TaskExport中,并且返回一个bytes.Buffer流,最后设置http响应头,并且返回的是ctx.Stream(),这样就可以实现下载功能了。也能使用上之前的middlewire中间件了。