面试必考restful全栈技能,我不允许谁还不会restful
引言
什么是restful
restful是一种软件架构风格,它基于http协议和rest原则设计,无论是前端、后端还是数据库等各个技术组件,都按照restful的原则进行设计和开发。这包括使用URI来唯一标识和定位资源,通过http方法(如GET、POST、PUT、DELETE等)对资源进行操作,以及使用无状态的方式来处理客户端请求。这些请求方式使得客户端可以与服务器进行交互,实现对资源的创建,下面让我们来探索一下吧!
让我们开始restful全栈开发
在这里,我们创建了一个全栈的项目fullstack,分为前端和后端,前端叫做frontend,后端叫做backend。首先,我们我们需要初始化后端项目:在backend后端文件夹点击鼠标右键在终端打开:
输入指令:npm init -y,
当你看见backend后面多了一个package.json文件的时候,说明后端初始化成功,接下来,我们在backend文件夹下面创建一个db.json文件
解释一下db.json里面装的是json数据,我们可以通过json-server来访问数据
在这里,我们定义了一些数据
既然我们要通过json-server来访问数据,首先,我们来安装一个包:在终端输入指令:npm i json-server
当我们在package.json文件夹里面看见多了一个依赖部分,说明已经安装成功
接下来,我们在scripts里面改成 "dev": "json-server db.json",这样,我们就可以访问db.json里面的数据了
然后,我们在终端输入指令:npm run dev 将项目运行起来,
项目运行起来之后,我们会得到一个http地址,当我们点击这个地址,我们可以看见自己定义的数据
db.json 就是一个资源文件,这个文件是一个json文件,也可以是一个SQL文件,我们需要一个http服务,通过-json-server让资源进行暴露
接下来,我们来用一下restful,来对数据进行增,删,改,查
首先,我们需要下载一个postman
这个是psotman的网址 www.postman.com/downloads/
下载之后,输入框内写入地址,用GET来访问地址里面的数据,然后点击send,我们就可以访问我们自己定义的数据了
1.查
当然,如果我们要访问具体的某一个值:可以在地址后面加上它的具体ID
http://localhost:3000/users/1
2.增
在postman里面,我们通过POST,来增加数据,在这里,我们选择body,raw,数据为JSON格式,加入模你想要添加的数据
点击send之后,我们会发现在db.json文件中,多了一条数据
这正是我们添加的数据,说明添加成功了
3.改
在postman里面,我们通过PATCH,来改变数据,假如,我们要把牛哥改成喻大米,应该怎么操作呢
输入框内,我们通过http://localhost:3000/users/id的形式,来改变数据
再返回db.json里面,我们会发现,牛哥变成了喻大米
这样,我们就对数据进行了改变
4.删
在postman里面,我们通过DELETE,来删除数据,假如,我们要把喻大米这条数据删掉,我们应该
输入框内,我们通过http://localhost:3000/users/id的形式,来删除数据
再返回db.json里面,我们会发现,喻大米这条数据没了
总结一下
-restful 定义了资源的提供方式 名词 + 动词 组成资源暴露的方式
资源 名词users
-Method Get 列表
-url http://localhost:3000/post
HTTP动作
GET 读 详情 http://localhost:3000/users/ :id 动态数据 动态参数
POST 写 (增加) http://localhost:3000/users
PATCH 修改 一个用户 http://localhost:3000/users/id
DELETE 删除 一个用户 http://localhost:3000/users/id
接下来,我们来简单聊一聊http协议
简单介绍一下http:
HTTP 由请求(Request)和响应(Response)两个主要部分组成。下面是详细的组成部分:
-
请求行
- 包括请求方法(Method),如 GET、POST、PUT、DELETE 等。
- 请求的资源的统一资源标识符(URI)或统一资源定位符(URL)。
-
请求头部(Request Headers)
请求头 Cookie 用于在客户端和服务器之间存储小型数据片段,以便跟踪用户会话。
请求体:表单数据
-
状态行(Status Line)
- 包括使用的HTTP协议版本。
- 一个状态码,如 200 表示成功,404 表示未找到,500 表示服务器内部错误。
- 状态描述,这是一个可读的状态短语,如 "OK" 或 "Not Found"。
接下来,我们通过前端,来实现一下
再frontend里面,创建一个index.html,我们通过前端来向后端发送请求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
function getAjaxUserData() {
return new Promise((resolve, reject) => {
fetch('http://localhost:3000/users')
.then(data => data.json())
.then(data => {
resolve(data)
})
})
}
(async function () {
const users = await getAjaxUserData();
console.log(users);
fetch('http://localhost:3000/users', {
method: 'post',
body: JSON.stringify({
id: "100",
name: "鹏哥",
hometown: "赣州"
})
})
})()
</script>
</body>
</html>
JavaScript函数 getAjaxUserData()
Javascript
1function getAjaxUserData() {
2 return new Promise((resolve, reject) => {
3 fetch('http://localhost:3000/users')
4 .then(data => data.json())
5 .then(data => {
6 resolve(data);
7 });
8 });
9}
getAjaxUserData
函数返回一个Promise,该Promise使用 fetch
API 从本地服务器的/users
端点获取数据。获取的数据被转换为JSON格式,然后通过 resolve
方法返回。
异步函数调用和数据处理
Javascript
1(async function () {
2 const users = await getAjaxUserData();
3 console.log(users);
4
5 fetch('http://localhost:3000/users', {
6 method: 'post',
7 body: JSON.stringify({
8 id: "100",
9 name: "鹏哥",
10 hometown: "赣州"
11 })
12 });
13})();
这里使用了一个立即执行的异步函数。首先,通过 await
关键字调用 getAjaxUserData
函数,并等待其结果。获取到的用户数据被打印到控制台。
接下来,使用 fetch
发送一个POST请求到相同的/users
端点,这次是向服务器发送数据。请求体包含了JSON字符串化的对象,包括一个用户的id、name和hometown属性。
返回db.json.我们可以发现,我们添加了一些数据
如果对AJAX,fetch不太理解的小伙伴,可以去看一下我之前写的文章
收获
今天,我们通过restful模拟了一下全栈开发,简单了解了一下http协议。后端通过postman来进行增,删,改,查,也通过前端向后端发送请求,来对数据进行改变,这样,我们就自己实现了一个简单的全栈开发。
制作不易,感谢支持
转载自:https://juejin.cn/post/7377326783581323304