赞
踩
使用node框架express来写个前端使用的api接口。
写在前面:
之前发过的一篇 分享免费api接口 浏览很多,看来需要接口的道友不少,那么与其苦于寻找接口,不如自己动手写,自给自足,既满足需求又可以在这个内卷的时间提高下自己,好了,开干吧。
本文为express接口入门,没有用数据库,关于数据的增删改查则利用js模拟删选。如需数据库的看下面这篇:
正文开始:
第一步:新建项目文件夹,初始化,文件夹下新建一个app.js
第二步:根目录下打开cmd,安装express,执行如下命令
npm i express
然后再装一个解决接口跨域的插件,输入如下命令安装
npm i cors
安装后文件应该是这样的
第三步:进入app.js开始写入如下代码,然后运行app.js开启一个本地服务器(此时,你的电脑既是服务端又是客户端,自己访问自己电脑本地的服务)
运行项目app.js: 项目根目录下打开cmd输入node app.js 回车
到这里,一个最简单的本地服务器已经运行在你的电脑上了,此时来做一个简单的测试,访问 http://localhost:3000/ 这个服务,会看到如下图所示:
第四步:开始写接口, 写个get类型的查询用户列表的接口,注意此处没有用到数据库,只是让服务器返回一些用户数据,数据来自服务器,一般服务器数据取自于数据库,这里为简便明了,先手动模拟数据。
在app.js的app.listen之前写入如下代码:
接口规则代码就按这样写,其中req是用来接收前端传的参数的:
完整代码应该是这样的:
写完之后,重启一下app.js,就是在根目录的cmd里面重新运行一遍node app.js。
接下来测试下我们写的这个接口,get类型接口可以直接在浏览器地址栏输入测试,可以看到,数据已经返回了。
但是地址栏只能测试get类型接口,并且数据格式也不容易看清,最主要的是浏览器地址栏不能测试post类型接口,所以就需要一个测试接口的工具,一般都用postman,个人觉得软件太麻烦,进入这个网站来测试接口https://getman.cn/,这是一个在线测试接口网址,挺好用的。
可以看到,接口已经正确返回数据了。
到这里,是不是觉得写个接口很简单,post类型大同小异了,基本和get类似的写法:
这是一个post类型查询新闻列表接口:
测试post接口:
到此,一个简单的查询列表的接口就可以了。但是,接口大部分情况下都是需要带参数的,下面分别看下get和post接口请求如何接收前端参数。
get接口接受前端参数:
场景:例如前端需要拿到性别为女的用户列表,那么前端需要传给接口一个参数,意为需要某个条件下的数据,这里传给后端接口一个sex参数(这个参数一般是由接口规定的,需要前端传一个什么参数),若sex参数值为0则表示需要性别为女的用户列表,sex值为1则表明需要性别为男的用户列表。
get接口应该如下这样改动(这里的数据理论上应该是使用sql语句去删选的,但是这里没有用到数据库,所以使用filter模拟数据删选):
然后测试这个接口:传sex==0时返回性别女的数据:
传sex==1时返回性别男的数据:
可以看到,通过传sex参数正确返回了需要的数据。
总结get接口接收前端参数:req.query
接下来看post接口接收前端参数:
post接口接受前端参数:
场景:前端将id传给接口,删选出当前id对应的列表
对于post类型,要获取前端传的参数,先要安装一个插件:body-parser
安装之后需要引入并使用插件:
然后,接口这样写:
测试,id传1,返回id为1的数据:
id传2,返回id为2的数据:
总结post接口接收前端参数:req.body
完整代码(复制到app.js中,根目录下cmd,输入node app.js 回车开启项目,然后测试接口):
查询用户列表:http://localhost:3000/userList
查询新闻列表:http://localhost:3000/newsList
- // 引入express并use使用它
- const express = require('express')
- const app = express()
-
- //导入解决跨域
- const cors = require('cors')
- app.use(cors())
-
- // 用于post接收前端参数
- const bodyParser = require('body-parser');
- app.use(bodyParser.urlencoded({ extended: false }));
-
- // 用户查询接口
- app.get('/userList', (req, res) => {
- // req.query拿到前端传的参数
- let obj = req.query
- console.log(obj);
- let list = [
- { name: '张三', age: 32, sex: '男', job: '程序员' },
- { name: '李四', age: 12, sex: '女', job: '视频教程师' },
- { name: '王五', age: 42, sex: '男', job: '自由职业者' }
- ]
-
- // 利用参数删选出需要的数据
- if (obj.sex == 0) {
- list = list.filter(v => {
- return v.sex == '女'
- })
- } else if (obj.sex == 1) {
- list = list.filter(v => {
- return v.sex == '男'
- })
- }
-
- // 返回给前端的数据
- res.send(list)
- })
-
-
- // 新闻列表查询接口
- app.post('/newsList', (req, res) => {
- let obj = req.body
- console.log(obj.id, '接收到的前端参数');
- let list = [
- { id: 1, title: '新闻标题一', time: '2023-7-1', desc: '这是新闻的简介描述1' },
- { id: 2, title: '新闻标题二', time: '2023-7-2', desc: '这是新闻的简介描述2' },
- { id: 3, title: '新闻标题三', time: '2023-7-3', desc: '这是新闻的简介描述3' },
- ]
- // 如果传来id则删选 否则返回全部数据
- if (obj.id) {
- list = list.filter(v => {
- return v.id == obj.id
- })
- }
-
- res.send(list)
- })
-
-
- app.listen(3000, () => {
- console.log('server success,本地服务器已经启动在3000端口!');
- })
到此,完。
如果对你有帮助,动动发财的手点个赞吧!
本文首发于微信公众号:雪天前端,欢迎关注,订阅更多实用资源!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。