使用 fetch() 函数和 Response 对象的示例,创建一个新的 Response 对象来模拟一个自定义响应

在这个示例中,我们首先使用 fetch() 发起一个GET请求到 apiURL。如果响应状态码表示成功(即 response.ok 为 true),我们将响应体转换为JSON。

然后,我们创建一个新的 Response 对象 newResponse,其中包含自定义的JSON字符串和一些自定义的响应头。这个新的 Response 对象具有200状态码和"OK"状态信息。

最后,我们解析这个新的 Response 对象中的JSON数据,并在控制台中打印出来。如果在请求或处理过程中发生错误,我们将在 catch 块中捕获并打印错误信息。

请注意,这个示例中的 newResponse.json() 是为了演示如何使用 Response 对象。在实际应用中,通常不需要手动解析 Response 对象中的JSON,因为 fetch() 已经为我们处理了这一步。这里的 newResponse 仅用于演示目的。

javascript 复制代码
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
        <title>测试Request()对象发送请求</title>
    </head>
    <body>
        <script>
           const apiUrl='requestTest.php';
           fetch(apiUrl)
           .then(response=>{
            if(!response.ok)
                {
                    throw new Error('network response was not ok');
                }
                return response.json();
           })
           .then(data=>{
                console.log('fetch data:',data);
                const newHeaders=new Headers({
                    'Content-Type':'application/json',
                    'X-Custom-Header':'CustomValue'//设置标头大多用于令牌或加密之类
                });

                const newResponse=new Response(
                    JSON.stringify({message:'Custom response',data:data}),
                    {
                        status:200,
                        statusText:'ok',
                        headers:newHeaders
                    }
                );
                return newResponse.json();
           })
           .then(customData=>{
                console.log(customData);
           })
           .catch(error=>{
                console.log(error);
           })
           
        </script>
    </body>
</html>
相关推荐
芭拉拉小魔仙4 分钟前
【Vue3+TypeScript】H5项目实现企业微信OAuth2.0授权登录完整指南
javascript·typescript·企业微信
JosieBook41 分钟前
【SpringBoot】21-Spring Boot中Web页面抽取公共页面的完整实践
前端·spring boot·python
吃饭睡觉打豆豆嘛1 小时前
深入剖析 Promise 实现:从原理到手写完整实现
前端·javascript
前端端2 小时前
claude code 原理分析
前端
GalaxyMeteor2 小时前
Elpis 开发框架搭建第二期 - Webpack5 实现工程化建设
前端
Spider_Man2 小时前
从 “不会迭代” 到 “面试加分”:JS 迭代器现场教学
前端·javascript·面试
我的写法有点潮2 小时前
最全Scss语法,赶紧收藏起来吧
前端·css
小高0072 小时前
🧙‍♂️ 老司机私藏清单:从“记事本”到“旗舰 IDE”,我只装了这 12 个插件
前端·javascript·vue.js
Mo_jon2 小时前
css 遮盖滚动条,鼠标移上显示
前端·css
EveryPossible2 小时前
终止异步操作
前端·javascript·vue.js