首页 > 解决方案 > 在 JavaScript 中更改 Response 对象

问题描述

// takes the passed string as body
const response = new Response("Hello, World!");

// cannot change the body
const response = new Response();

response.body = "Hello, World!";

我正在尝试实现一些类似于非常小的 expressjs 的东西。我希望有将空响应对象作为参数并根据需要进行更改的方法,最后我会将该响应发送给客户端。

响应对象的主体在创建后属于 ReadableStream 类型,之后我不能简单地设置主体,如上所示。在那之后我能以某种方式改变身体吗?expressjs 如何做到这一点?

我当前的解决方法是将一个虚拟响应对象传递给我的方法,在对该虚拟对象的响应中添加我想要的标头,然后返回一个新对象,其中包含从该方法返回的主体和附加到它的标头。但这看起来一点也不漂亮或聪明。

当我也想设置响应状态时,也会出现同样的问题。这次我也不能使用虚拟响应,因为该虚拟的状态也是只读的。我为此找到的解决方法是再次从被调用的方法中抛出一些自定义对象,并创建一个新的响应对象以与该信息一起返回。

有没有办法随时更改响应对象?创建方法可以返回和抛出的 HttpResponse 和 HttpError 类以便我们可以调用该方法并采取与该方法的结果相关的操作是一种好习惯吗?

标签: javascriptexpresshttpfetchhttpresponse

解决方案


推荐阅读