首页 前端知识 NodeJs四步写出api接口(附源码一键CV)

NodeJs四步写出api接口(附源码一键CV)

2024-08-04 22:08:51 前端知识 前端哥 542 691 我要收藏

使用node框架express来写个前端使用的api接口。

写在前面:

之前发过的一篇 分享免费api接口 浏览很多,看来需要接口的道友不少,那么与其苦于寻找接口,不如自己动手写,自给自足,既满足需求又可以在这个内卷的时间提高下自己,好了,开干吧。

本文为express接口入门,没有用数据库,关于数据的增删改查则利用js模拟删选。如需数据库的看下面这篇:

使用数据库:express+mysql接口

正文开始:

第一步:新建项目文件夹,初始化,文件夹下新建一个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端口!');
})

图片

到此,完。

如果对你有帮助,动动发财的手点个赞吧!

本文首发于微信公众号:雪天前端,欢迎关注,订阅更多实用资源!

转载请注明出处或者链接地址:https://www.qianduange.cn//article/14771.html
标签
评论
发布的文章

RapidJSON介绍

2024-08-14 00:08:38

jQuery 4 beta 震撼发布

2024-08-14 00:08:36

cJSON的使用

2024-08-14 00:08:36

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!