初识前后端数据交互(新手篇)

一个软件项目的开发必然是离不开前端和后端的协作,对于刚入行的新手前端或者新手后端来说,很有必要了解一下对方是在做什么,以及提供给自己什么样的帮助,为什么需要对方共同协作才能完成整个软件项目的开发呢?希望这篇博客可以让你初步了解一下。

1.前端和后端的定位 

        Long long ago 是没有严格意义上的前后端区分,有的就是一个程序员直接把前后端全做了。也就是我们现在所说的全栈。与之相关的语言就是如jsp,php这类的脚本语言。既可以提供后端服务,又可以在客户端提供渲染。因此在那个群魔并起的时期,前端页面中总是会穿插大量的后端脚本渲染语句。随着项目复杂度不断增加,维护起来也是难上加难。后面,才有了将前后端分开的开发理念。

        前端,通俗的理解就是做面向客户端的工作。比如各种跨端的页面。因为是要写页面,涉及到页面的布局,效果以及色彩相关,而这些工作又是由UI设计来完成,所以与之工作交流最多的就是UI设计了。所以,千万别得罪UI哦,小心她给你设计一个五彩斑斓的黑。刚开始学前端的时候,只知道写页面,数据交互哪些都是不懂的。所以也叫页面仔。这是所有入门前端的第一步。暂且不提,当页面写好了,第二步就是和后端协同做对接。

        后端,用户在使用软件和网站的时候,只能看到页面。而页面又是前端和UI设计的结果,因此,后端其实是有一个和客户有隔代沟通的障碍。换而言之,后端是一个在背后默默付出的职业。但是在整个软件开发项目中,却是个不容忽视的存在。因为有他的存在,你的页面才能“活”起来。

        通俗理解,前端写页面,提供给用户使用。用户可以看到设计出的精美页面,但是,这只是视觉上的效果,功能呢?假如用户要看一篇文章。文章的内容前端可以直接写到页面里,作为页面的一部分。但是假如有一百篇文章呢?难不成写一百个页面吗?明明只是内容的差异而已,布局和色调都是一样的。所以,这个时候就需要后端的帮助了,让数据变得动态。

        前者内容都写在页面中,改变不了。没有和后端进行动态的数据交互,所以这类的前端页面统称静态页面。后面通过数据交互,让数据从后端返回,前端再写入页面上。数据就动态了。至于数据为什么经过后端的返回就动态了,看下面这个就懂了。

                                  前端页面————后端服务————数据库

简单粗暴的理解就是:

对于前端而言:根据你的需求,让后端返回对应的数据。来丰富你的页面功能。

对于后端而言:前端需要啥,我给啥就行。有些数据涉及到隐私,你得拿东西(请求参数)来换

2.php数据交互示例

前端代码:index.html

<!DOCTYPE html>
<html>
    <meta charset="utf-8">
<head>
  <title>Axios Example</title>
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
  <button onclick="sendRequest()">发送请求</button>

  <script>
    function sendRequest() {
      axios.get('http://localhost/api.php')
        .then(function (response) {
          console.log(response.data);
        })
        .catch(function (error) {
          console.error(error);
        });
    }
  </script>
</body>
</html>

php后端代码:api.php

<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $data = array(
        'message' => 'Hello, world!',
        'timestamp' => date('Y-m-d H:i:s')
    );
    echo json_encode($data);
} else {
    // 处理其他HTTP请求方法的代码...
}

3.node数据交互示例

前端代码:index.html    请求路径修改成node服务启动的路径:http://localhost:3000

node后端代码:node.js

const express = require('D:/nodejs/node_modules/express');
const app = express();

// 定义路由和处理程序
app.get('*', (req, res) => {
    res.setHeader('Access-Control-Allow-Origin', '*'); // 允许所有来源访问,也可以指定具体的来源
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); // 允许的 HTTP 请求方法
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); // 允许的请求头字段
    const data = {
        message: 'Hello, world!',
        timestamp: new Date().toISOString()
    };
    res.json(data);
});

// 启动服务器
const port = 3000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

4.效果展示

点击发送请求,从后端就会返回对应的数据,这里因为示例中没有涉及到数据库,所以返回的数据是在后端代码中定义死的。仅做示例,通过这两个例子,能初步了解前后端的数据交互。

5.数据交互须知

         这里只是用到了最简单的一个数据返回例子,但是在前后端数据相互的过程中有两大拦路虎。请求参数跨域。这个是前后端交互中不可避免也必须要解决的两大问题。跨域的解决方式有很多,比如:代理服务器,JSONP,CORS,服务器端设置允许跨域等。请求参数主要和请求方法及Content-Type相关。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/194707.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

14.1 USA.gov Data from Bitly(USA.gov数据集)

CHAPTER 14 Data Analysis Examples&#xff08;数据分析实例&#xff09; 14.1 USA.gov Data from Bitly&#xff08;USA.gov数据集&#xff09; 2011年&#xff0c;短链接服务&#xff08;URL shortening service&#xff09;商Bitly和美国政府网站USA.gov合作&#xff0c;…

【springboot】宝塔简单部署springboot 配置https

宝塔简单部署springboot配置https 需求步骤1. springboot通过maven组件打成jar包2. 将jar包部署到宝塔上3. 下载安装nginx并创建网站节点4. 设置域名或者IP5. 设置反向代理:代理后端服务的ip和端口7. 配置SSL/TLS 需求 宝塔部署springboot项目,用nginx反向代理后端IP端口&…

深入理解OS--数值编码

信息的表示和处理 寻址和字节顺序 位于0x100处&#xff0c;int类型值0x01234567在大端和小端下的存储。 字符串的存储不受字节序影响。 移位 1.对左移&#xff0c;右边统一补0 2.对右移&#xff0c;分为算术右移&#xff0c;逻辑右移 算术右移下&#xff0c;左边补原最高有效…

VS2022 配置Qt编译环境 | winows安装Qt5.14.2 | VS2017和Qt5配置成功指南

Visual Studio 2022安装教程完文本内容较多,请耐心看完,挺有收获的,要自己多尝试哦。 文章目录 # 插件安装 如果你想用VS2022来创建QT项目,那么你首先要学会下面的操作,创建一个空白解决方案,在扩展搜索qt,并且下载两个插件(带有绿√的就是)。这里其实是一个坑:VS20…

万宾科技第四代可燃气体监测仪的作用

燃气作为一种重要的能源已在居民生活、工业生产和商业活动等领域得到了广泛的应用。但是与之而来的便是各种各样的燃气管网的安全问题&#xff0c;其中燃气管网泄漏成为了城市生命线建设中亟待解决的安全隐患。因此采取切实有效的措施来保障燃气管网的安全运行&#xff0c;应用…

NB-IoT BC260Y Open CPU SDK④开发环境搭建

NB-IoT BC260Y Open CPU SDK④开发环境搭建 1、SDK包的介绍2、编程工具3、程序框架1、SDK包的介绍 (1)、SDK包的下载: 链接: (2)、文件目录介绍 文件名描述device启动文件、底层配置文档等doc存放 QuecOpen 项目相关的说明文档osFreeRTOS 相关代码out输出编译 App 和调…

【Python】遍历电脑中的所有文件

通过os模块中的os.walk()遍历电脑指定路径的所有文件及大小&#xff1a; import osdef traverse_files(path):file_path_list[]file_size_list[]for root, dirs, files in os.walk(path):for file in files:file_path os.path.join(root, file)file_path_list.append(file_pa…

最新版小权云黑系统 骗子添加查询源码

小权云黑系统添加骗子&#xff0c;查询骗子&#xff0c;可添加团队后台方便审核用&#xff0c;在线反馈留言系统&#xff0c;前台提交骗子&#xff0c;后台需要审核才能过&#xff0c;后台使用光年UI界面&#xff0c;新增导航列表&#xff0c;可给网站添加导航友链&#xff0c;…

爬虫系统Docker和Kubernetes部署运维最佳实践

在构建和管理爬虫系统时&#xff0c;使用Docker和Kubernetes可以带来诸多好处&#xff0c;如方便的部署、弹性伸缩和高可靠性。然而&#xff0c;正确的部署和运维实践对于确保系统稳定运行至关重要。在本文中&#xff0c;我将分享爬虫系统在Docker和Kubernetes上的最佳部署和运…

2020年09月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共15题,每题2分,共30分) 第1题 执行下面程序,输入4和7后,角色说出的内容是? A:4,7 B:7,7 C:7,4 D:4,4 答案:B 第2题 执行下面程序,输出是? A:大学 中庸 孟子 论语 B:论语 大学 孟子 中庸 C:大…

Unity中Shader的BRDF解析(一)

文章目录 前言现在我们主要来看Standard的 漫反射 和 镜面反射一、PBS的核心计算BRDF二、Standard的镜面高光颜色三、具体的BRDF计算对于BRDF的具体计算&#xff0c;在下篇文章中&#xff0c;继续解析 四、最终代码.cginc文件Shader文件 前言 在上篇文章中&#xff0c;我们解析…

Lasso回归

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 Lasso回归 以下代码的说法中正确的是? import numpy as np import matplotlib.pyplot as plt x np.array([[1],[2],[3],[4]]) y np.array([1,3,6,10]) from sklearn.linear_model impor…

电脑热点无法使用,分配IP地址失败

电脑热点无法使用&#xff0c;分配IP地址失败 不知道从什么时候起电脑开热点就无法连接上了&#xff0c;手机提示无法分配IP地址&#xff0c;电脑正常显示。 设置共享网络连接时提示以下内容。 无法启用internet连接共享,为LAN连接配置的IP地址需要使用自动IP寻址 查阅相关资…

java编程:给定⼀组正整数数组M,找出M数组中N项和为给定数S。如果有多对N项数字的和都等于 S,则输出N个数的乘积最⼩的哪⼀项,没有则返回空

题目&#xff1a; 编程题&#xff1a;给定⼀组正整数数组M&#xff0c;找出M数组中N项和为给定数S。如果有多对N项数字的和都等于 S&#xff0c;则输出N个数的乘积最⼩的哪⼀项&#xff0c;没有则返回空&#xff1b; 程序如下&#xff1a; 测试主程序&#xff1a; 先看下测试示…

【操作宝典】SQL巨擘:掌握SQL Server Management的终极秘籍!

目录 ⛳️【SQL Server Management】 ⛳️1. 启动登录 ⛳️2. 忘记密码 ⛳️3. 操作数据库和表 3.1 新建数据库text 3.2 新建表 3.3 编辑表 3.4 编写脚本 ⛳️【SQL Server Management】 ⛳️1. 启动登录 需要开启服务 ⛳️2. 忘记密码 登录windows--> 安全性 -->…

Windows11安装后跳过联网登录

Windows11安装后跳过联网登录 实验设备&#xff1a; VMware17Pro虚拟机中使用Windows11镜像安装Windows11操作系统&#xff0c;并且在虚拟机中测试跳过联网登录。 步骤 说明&#xff1a;物理卸载网卡&#xff08;在虚拟机上禁用网卡&#xff09;没用 思路&#xff1a; sh…

计算机毕业设计springboot+vue高校田径运动会报名管理系统61s38

高校田径运动会管理采用java技术&#xff0c;基于springboot框架&#xff0c;mysql数据库进行开发&#xff0c;实现了首页、个人中心、运动员管理、裁判员管理、场地信息管理、项目类型管理、比赛项目管理、比赛报名管理、比赛成绩管理、通知公告管理、留言板管理、交流论坛、系…

北美区域性确定性预测系统平均温度数据

区域确定性预测系统&#xff08;RDPS&#xff09; 区域确定性预测系统 (RDPS) 进行物理计算&#xff0c;以 10.0 公里网格&#xff08;1/11 度&#xff09;空间分辨率对当天到未来 48 小时内的大气元素进行确定性预测。平均温度数据覆盖北美&#xff0c;由加拿大气象局 (MSC) …

GitHub 2023排名前十的最佳开源项目

开源软件&#xff08;OSS&#xff09;彻底改变了当今软件开发的方式。在数百万个开源GitHub项目中&#xff0c;要找到最适合需求的开源项目可能会让人不知所措。 今天给大家列出2023年增长最快的前10个开源GitHub仓库。通过这些增长最快的开源项目&#xff0c;也可以从整体上了…

Jboss启动报错Unrecognized VM option PermSize=128m

1.问题现象 JBoss启动提示创建JAVA虚拟机失败&#xff0c;异常信息如下 异常截图 异常日志 .JBoss Bootstrap Environment .JBOSS_HOME: E:\Jboss\jboss-4.0.2_BR_5.4.4.21\bin\\.. .JAVA: C:\Java\jdk1.6.0_38\bin\java .JAVA_OPTS: -Xms64m -Xmx1024m -Dprogram.namerun.ba…