基于 ID 使用 Fetch API 更新数据库中的 JSON 数据


基于 ID 使用 Fetch API 更新数据库中的 JSON 数据

本教程详细阐述如何利用 j*ascript 的 fetch api,通过 http `put` 请求更新数据库中特定 id 的 json 数据。内容涵盖数据添加、获取及核心的更新操作,并提供代码示例,旨在帮助开发者高效管理前端与后端的数据交互。

在现代Web应用开发中,前端与后端的数据交互是核心环节。J*aScript 的 Fetch API 提供了一种强大且灵活的方式来发送网络请求,实现数据的创建(Create)、读取(Read)、更新(Update)和删除(Delete),即 CRUD 操作。本文将重点探讨如何利用 Fetch API 通过 ID 更新数据库中特定的 JSON 数据。

数据添加(POST 请求)

在进行数据更新之前,我们通常需要有数据存在。以下是一个使用 Fetch API 向数据库添加新 JSON 数据的示例,通常通过 HTTP POST 方法实现:

import { useN*igate } from 'react-router-dom';

function addLoggbokHandler(loggbokData) {
  const history = useN*igate(); // 用于页面导航或刷新
  fetch(
    "api/objects.json", // 目标API端点
    {
      method: "POST", // 指定为POST方法
      body: JSON.stringify(loggbokData), // 将J*aScript对象转换为JSON字符串作为请求体
      headers: {
        "Content-Type": "application/json" // 告知服务器请求体是JSON格式
      }
    }
  ).then(() => {
    history(0); // 请求成功后刷新当前页面或进行其他操作
  });
}

此函数通过 POST 请求将 loggbokData 发送到 api/objects.json 端点。JSON.stringify() 用于将 J*aScript 对象序列化为 JSON 字符串,并通过 Content-Type 头告知服务器数据的类型。

数据获取(GET 请求)

获取数据库中的现有数据是进行更新操作的前提。以下代码展示了如何使用 Fetch API 获取所有 JSON 数据并进行渲染:

import { useState, useEffect } from 'react';

function LoggboksList() {
  const [isLoading, setIsLoading] = useState(true);
  const [loadedLoggboks, setLoadedLoggboks] = useState([]);

  useEffect(() => {
    setIsLoading(true);
    fetch(
      "api/objects.json", // 目标API端点
    ).then(response => {
      // 检查响应是否成功,并解析JSON
      if (!response.ok) {
        throw new Error('Network response was not ok');
      }
      return response.json();
    }).then(data => {
      const loggboks = [];
      // 将返回的数据转换为数组格式
      for (const key in data) {
        const loggbok = {
          id: key,
          ...data[key]
        };
        loggboks.push(loggbok);
      }
      setIsLoading(false);
      setLoadedLoggboks(loggboks); // 更新状态以渲染数据
    }).catch(error => {
      console.error("Error fetching data:", error);
      setIsLoading(false);
      // 处理错误,例如显示错误消息
    });
  }, []); // 空依赖数组表示只在组件挂载时运行一次

  if (isLoading) {
    return <p>Loading loggboks...</p>;
  }

  // ... 渲染 loadedLoggboks 的逻辑
}

这段代码在组件挂载时发起 GET 请求,从 api/objects.json 获取数据。获取到的 JSON 数据会被遍历并转换为一个数组,然后更新组件的状态以供渲染。

 3.8.6雷风影视CMS 3.8.6雷风*CMS

雷风*CMS是一款采用PHP基于THINKPHP3.2.3框架开发,适合各类视频、*网站的*内容管理程序,具有良好的用户体验,适合美工人员快速建立站点,您也可以根据您的需要进行应用扩展来达到更加强大功能,您可以在遵循协议的情况下完全免费的使用我们的程序。 雷风*CMS 3.8.6 更新日志:2018-08-19 1.修改影片添加地址按钮颜色; 2.增加影片采集更新数据选取功能;

 3.8.6雷风影视CMS 234 查看详情  3.8.6雷风影视CMS

核心:通过 ID 更新特定 JSON 数据(PUT 请求)

更新数据库中特定 ID 的 JSON 数据是本教程的核心。这通常通过 HTTP PUT 方法实现。PUT 请求的语义是“替换”资源:如果资源存在,则完全替换它;如果不存在,则创建它。

以下是实现通过 ID 更新 JSON 数据的函数示例:

function updatebokHandler(id, loggbokData) {
  fetch(
    `api/objects/${id}.json`, // 动态构建URL,包含要更新的资源ID
    {
      method: "PUT", // 指定为PUT方法
      body: JSON.stringify(loggbokData), // 将更新后的数据转换为JSON字符串
      headers: {
        "Content-Type": "application/json" // 告知服务器请求体是JSON格式
      }
    }
  ).then(response => {
    if (!response.ok) {
      // 处理非2xx响应,例如服务器错误
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    // 根据需要处理成功响应,例如刷新数据、显示成功消息
    console.log(`Loggbok with ID ${id} updated successfully.`);
    // 可以在这里重新获取数据或局部更新前端状态
  }).catch(error => {
    console.error("Error updating loggbok:", error);
    // 处理网络错误或JSON解析错误
  });
}

代码解析:

  1. URL 结构 (api/objects/${id}.json):这是实现按 ID 更新的关键。通过将资源的唯一标识符 id 嵌入到 URL 路径中,后端服务器就能准确识别并操作对应的资源。这遵循了 RESTful API 设计的常见约定。
  2. method: "PUT":明确指定 HTTP 请求方法为 PUT,表示这是一个更新或替换操作。
  3. body: JSON.stringify(loggbokData):将包含最新数据的 loggbokData 对象转换为 JSON 字符串,作为请求体发送给服务器。服务器将使用此数据替换 ID 对应的现有资源。
  4. headers: { "Content-Type": "application/json" }:此请求头是必不可少的,它告知服务器请求体的数据格式是 JSON,以便服务器正确解析。
  5. .then() 块:在 PUT 请求成功后执行。通常,你可以在这里执行一些后续操作,例如:
    • 重新获取数据: 调用之前获取所有数据的函数,刷新前端显示。
    • 局部更新状态: 如果后端只返回成功状态,可以在前端直接更新对应 ID 的数据,避免重新加载所有数据。
    • 用户反馈: 显示“更新成功”的提示信息。
  6. .catch() 块:用于捕获在请求过程中可能发生的网络错误或服务器返回的非成功状态码,提供健壮的错误处理机制。

注意事项与最佳实践

  • 错误处理: 在实际应用中,务必添加 .catch() 块来处理网络请求可能遇到的各种错误,例如网络中断、服务器无响应或返回错误状态码(如 404 Not Found, 500 Internal Server Error)。
  • API 端点设计: 遵循 RESTful API 设计原则,使用清晰、有语义的 URL 结构(如 /api/resources/{id})来表示和操作资源。
  • 前端状态同步: 当后端数据更新成功后,前端应用的状态也需要相应更新。你可以选择重新发起 GET 请求获取最新数据,或者在收到成功响应后,直接在前端状态中更新对应的条目,以减少网络请求。
  • 用户体验: 在数据更新过程中,提供加载指示器(loading spinner)和操作成功/失败的反馈信息,可以显著提升用户体验。
  • 安全性: 对于涉及敏感数据的更新操作,应考虑身份验证和授权机制,确保只有经过授权的用户才能修改数据。

总结

通过 Fetch API 进行数据库中 JSON 数据的更新是一个常见且重要的操作。理解 PUT 请求的语义、正确构建包含 ID 的 URL、设置请求体和请求头,并结合完善的错误处理与状态管理,可以帮助开发者高效且可靠地实现前端与后端的数据同步。遵循本文介绍的方法和最佳实践,你将能够构建出更加健壮和用户友好的 Web 应用程序。

以上就是基于 ID 使用 Fetch API 更新数据库中的 JSON 数据的详细内容,更多请关注其它相关文章!


# 你可以  # 梅州市公司网站建设  # 黑帽seo 引流推广  # 百度关键词搜索排名推广  # 沙县网站优化  # 枣庄推广网站建设  # 简述营销推广策划的方式  # 怒江哪有网站建设公司  # 中山伦教网站建设  # 闽侯技术推广营销中心地址  # 家具网站建设的意义  # 这是  # 复用  # 过程中  # 高阶  # react  # 在这里  # 是一个  # 转换为  # 数据库中  # restful api  # 状态码  # 应用开发  # 后端  # app  # json  # 前端  # js  # java  # javascript 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 抖音团长模式怎么做?团长模式是什么意思?  抖音视频如何添加标题?添加标题有哪些好处?  优化响应式标题底部边框:CSS实现技巧与最佳实践  React应用中Commerce.js数据加载与状态管理最佳实践  c++中的const关键字用法大全_c++ const正确使用指南  告别繁琐SEO!如何使用SyliusSitemap插件自动化生成网站地图,提升搜索引擎排名  人教版电子教材在线获取指南  腾讯QQ邮箱官方入口 QQ邮箱网页版登录平台  哔哩哔哩黑名单怎么查看  mysql归档数据怎么导出为csv_mysql归档数据导出为csv文件的方法  德邦物流在线查询系统 德邦快递货物运输追踪  餐馆菜篮选购指南  Excel如何制作月度销售统计图_Excel动态图表制作与控件应用  消除网页顶部意外空白线:CSS布局常见问题与解决方案  《东方财富》条件单关闭方法  使用 .htaccess 正确配置 WordPress 子目录重定向与路径保留  支付宝网页版在线入口 支付宝官网电脑登录入口  汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口  todesk如何添加信任设备_todesk信任设备设置教程  国际经济与贸易就业方向解析  荣耀盒子应用管理技巧  Magento 2 产品保存事件中安全更新属性的最佳实践  晨报|开发商暗示《空洞骑士:丝之歌》DLC开发中 《合金装备4》有望重制  WPS文字如何进行简繁转换  Pandas中基于动态偏移量实现DataFrame列值位移的策略  房产|直播|视频号怎么认证开通?|直播|需要什么资质?  AO3永久镜像入口开放_AO3最新网址兼容所有浏览器  《真我》申请退款方法  铁路12306入口 铁路12306官网版入口登录网址  电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】  Win10运行窗口在哪里打开 Win10调出运行命令框快捷键【技巧】  win11怎么启用或禁用休眠 Win11 powercfg命令管理休眠文件【技巧】  《律学法考》查看学习数据方法  谷歌邮箱官方入口链接 谷歌邮箱网页版电脑端快速登录  C++中std::thread和std::async的区别_C++并发编程与线程与异步任务比较  iCloud官方网站 iCloud网页版在线登录入口  解决CSS background 属性中 cover 关键字的常见误用  Go Goroutine调度与并发执行深度解析  WPS长文档分栏排版不乱方法_WPS分栏+分节符报纸排版教程  飞飞漫画漫画阅读官网_飞飞漫画漫画阅读官网进入阅读  智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法  苹果官网国补入口在哪  C++如何使用CMake构建项目_C++ CMakeLists.txt编写入门教程  Sublime怎么配置YAML文件格式化_Sublime YAML Formatter插件教程  斯宾塞称XGP云游戏“蒸蒸日上”:正在构建一个游戏从未如此唾手可得的未来  《火花chat》搜索好友方法  Win10如何查看已安装的更新补丁 Win10卸载指定更新教程【教程】  怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】  百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法  手机远程连接电脑方法 

 2025-10-11

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.