当前位置: 首页 > article >正文

使用 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 仅用于演示目的。

<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>

http://www.kler.cn/a/292465.html

相关文章:

  • java基础入门学习09-迭代器
  • 基于微信小程序的平安驾校预约平台的设计与实现(源码+LW++远程调试+代码讲解等)
  • 《Python Web 抓取实战:豆瓣电影 Top 250 数据抓取与分析》
  • Python 中.title()函数和.lower()函数
  • [JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决
  • 深度学习--正则化
  • 深入解析 Node.js 核心模块与异步编程:高效构建现代服务器应用
  • 【TS高频面试题】interface与type的区别
  • 【原创】java+springboot+mysql企业产品销售管理系统设计与实现
  • 空间数据库
  • 新书分享|ChatGLM3大模型本地化部署、应用开发与微调(附PDF)
  • 打卡第五十七天:prim与kruskal算法
  • 人生苦短我用Python excel转csv
  • 麒麟安全加固工具,为系统打造坚固“金钟罩”!
  • 微软云技术深度解析与代码使用案例
  • Python 人脸识别实战教程
  • Qt:玩转QPainter后转之太极图(步骤详细、包含源码)
  • 软件开发专用术语介绍
  • HTML元素拓展:data-*属性的应用与实践
  • 国产芯片LT6911UXE/C:HDMI 2.0转MIPI DSI/CSI转换器,4K超清
  • 【数据结构-二维前缀和】【列维护优化】力扣3212. 统计 X 和 Y 频数相等的子矩阵数量
  • EmguCV学习笔记 VB.Net 9.2 VideoWriter类
  • 谷歌seo网址如何快速被收录?
  • 大模型笔记01--基于ollama和open-webui快速部署chatgpt
  • 13.5 Files类操作梳理(下)
  • docker 启动ElasticSearch