当前位置:   article > 正文

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

node js写api

使用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

  1. // 引入express并use使用它
  2. const express = require('express')
  3. const app = express()
  4. //导入解决跨域
  5. const cors = require('cors')
  6. app.use(cors())
  7. // 用于post接收前端参数
  8. const bodyParser = require('body-parser');
  9. app.use(bodyParser.urlencoded({ extended: false }));
  10. // 用户查询接口
  11. app.get('/userList', (req, res) => {
  12. // req.query拿到前端传的参数
  13. let obj = req.query
  14. console.log(obj);
  15. let list = [
  16. { name: '张三', age: 32, sex: '男', job: '程序员' },
  17. { name: '李四', age: 12, sex: '女', job: '视频教程师' },
  18. { name: '王五', age: 42, sex: '男', job: '自由职业者' }
  19. ]
  20. // 利用参数删选出需要的数据
  21. if (obj.sex == 0) {
  22. list = list.filter(v => {
  23. return v.sex == '女'
  24. })
  25. } else if (obj.sex == 1) {
  26. list = list.filter(v => {
  27. return v.sex == '男'
  28. })
  29. }
  30. // 返回给前端的数据
  31. res.send(list)
  32. })
  33. // 新闻列表查询接口
  34. app.post('/newsList', (req, res) => {
  35. let obj = req.body
  36. console.log(obj.id, '接收到的前端参数');
  37. let list = [
  38. { id: 1, title: '新闻标题一', time: '2023-7-1', desc: '这是新闻的简介描述1' },
  39. { id: 2, title: '新闻标题二', time: '2023-7-2', desc: '这是新闻的简介描述2' },
  40. { id: 3, title: '新闻标题三', time: '2023-7-3', desc: '这是新闻的简介描述3' },
  41. ]
  42. // 如果传来id则删选 否则返回全部数据
  43. if (obj.id) {
  44. list = list.filter(v => {
  45. return v.id == obj.id
  46. })
  47. }
  48. res.send(list)
  49. })
  50. app.listen(3000, () => {
  51. console.log('server success,本地服务器已经启动在3000端口!');
  52. })

图片

到此,完。

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/68986
推荐阅读
相关标签
  

闽ICP备14008679号