当前位置: 首页 > 知识库问答 >
问题:

javascript - axios设置了responseType:arraybuffer,如何在只动接口代码的前提下返回json格式的数据?

麹耘豪
2023-12-01
const response = await axio.get({      responseType: 'arraybuffer',      url,       method: 'POST'});console.log(response.data); // 正常情况这里是返回bufferconsole.log(response.data.data); // 现在期望这里能返回buffer

希望上述请求返回的response.data.data能接收到buffer,可以改接口,但不能改前端代码

尝试使用node实现了接口,返回json格式的数据,但没达到预期还是response.data是buffer,response.data.data是undefined

router.post('/a/b.zip', async ctx => {  const filePath = path.join(__dirname, ctx.req.url.replace('/a', ''));  const buf = fs.readFileSync(filePath);  ctx.set('Content-Type', 'application/json');  ctx.status = 200;  ctx.body = {          data: buf     }});

共有1个答案

林浩漫
2023-12-01

如果你只希望这一个接口需要修改的话 直接

const response = await axio.get({      responseType: 'arraybuffer',      url,       method: 'POST'}).then((respones) => ({ respones: { data: { data: respones.data } } }));console.log(response.data); // 正常情况这里是返回bufferconsole.log(response.data.data); // 现在期望这里能返回buffer

你需要所有 post responseType: 'arraybuffer', 那就重写 post 方法 给你一个思路。
const tempAxiosGet = axios.get;

axios.get = function <T = any, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R> {  return tempAxiosGet<{ name: string }>(url, config)    .then((respones) => ({ respones: { data: { data: respones.data } } }))    .catch((error) => error)}

利用 promise 的 then函数可以解决

 类似资料:
  • 主要内容:1.接口相互作用,2.返回格式,3.数据,4.控制层控制器,5.美观美化,6.优雅优化,7.其他优化方案1.接口相互作用 前端和前端进行交互,前端按约定的请求URL路径,并合并相关参数,进入服务器接收请求,进行业务处理,返回数据给前端。 2.返回格式 我们可以参考这样的设计,这样的好处就把错误类型归类到某个区间内,如果区间不够,可以设计成4个数字。 这样前端开发人员在得到返回值后,根据状态码就可以知道,大概什么错误,再根据消息相关的信息描述,可以快速定位。 状态码和信息就会一一对应,比

  • 如何在Visual Studio代码中格式化代码?

  • 您可以在创建或编辑文件时设置用于控制代码格式的首选参数。 手动设置代码格式 打开支持的文件。 选择“编辑”>“代码”>“应用源格式”。 或者,从“常用工具栏”>“格式化源代码”中选择“应用源格式”。 手动设置文件中选定代码的格式 打开代码。 选择代码的任意部分。 选择“编辑”>“代码”>“将源格式应用于选定内容”。 或者,从“常用工具栏”>“格式化源代码”中选择“将源格式应用于选定内容”。 注意:

  • 本文向大家介绍Springmvc如何返回xml及json格式数据,包括了Springmvc如何返回xml及json格式数据的使用技巧和注意事项,需要的朋友参考一下 问:@ResponseBody注解怎么指定返回xml 还是json 答:@RequestMapping 的produces 属性指定 produces = "application/xml" 或者 produces = "applica

  • 问题内容: 我使用的是与扩展编辑源代码。每次我想格式化代码时,都必须按on ,on 或输入。是否可以在保存时设置格式,即当我按时,它会使用(或类似方式)自动格式化代码? 问题答案: 您应该安装此插件:https : //github.com/Microsoft/vscode-go。选项之一是在保存时设置“自动格式”:。它使用Golang工具进行格式化。

  • 当我使用MVC控制器时,我使用“返回OK(对象)”或“返回BadRequest(ErrorMessage)”等。 我怎样才能实现这是剃刀页? 我尝试返回新的JSON result(object);这在状态代码为200时有效。但是如果我想返回带有JSON错误消息的状态代码400呢?