使用 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>
相关推荐
console.log('npc')3 分钟前
vue2中子组件父组件的修改参数
开发语言·前端·javascript
Van_captain11 分钟前
rn_for_openharmony常用组件_Chip纸片
javascript·开源·harmonyos
奋斗吧程序媛22 分钟前
vue3 Study(1)
前端·javascript·vue.js
@Autowire25 分钟前
Layout-position
前端·css
QQ129584550427 分钟前
ThingsBoard - APP首页修改为手工选择组织
前端·javascript·物联网·iot
whyfail28 分钟前
前端数据存储新选择:IndexedDB与Dexie.js技术指南
前端·javascript·数据库
椰果uu28 分钟前
vue-virtual-scroller-虚拟滚动列表:渲染不定高度长列表+可控跳转
前端·javascript·typescript·vue
Kagol35 分钟前
深入浅出 TinyEditor 富文本编辑器系列之一:TinyEditor 是什么
前端·typescript·开源
空城雀39 分钟前
python精通连续剧第一集:简单计算器
服务器·前端·python
超绝大帅哥1 小时前
为什么回调函数不是一种好的异步编程方式
javascript