Node搭建api接口

一、NodeApi 环境搭建 创建文件夹

新建一个文件夹 nodeApi

在本地终端运行

npm init

创建一个package.json 文件

修改 package.json

"scripts": { "start": "node server" },

将原来的test启动命令修改为现在的dev,node server的意思是用node启动本地文件server.js,所以我们要在当前文件夹下在创建一个server.js

安装依赖

在本地终端运行

cnpm install express dotenv --save //如果你没有全局安装过nodemon,需要先全局安装一次 cnpm install -g nodemon //然后在开发环境安装 cnpm install -D nodemon

修改package.json,添加一个用nodemon启动项目的新命令

"dev":"nodemon server"

npm安装比较慢,这里我是用淘宝源来安装我们搭建本次项目所需要的环境依赖。

其中express是node的一个框架,每次修改文件都需要重启服务器,所以我们需要nodemon来帮助我们重启。

而dotenv呢?由于项目不同需求,需要配置不同环境变量,按需加载不同的环境变量文件,使用dotenv,可以完美解决这一问题。

创建环境变量

在当前目录下新建文件夹config,在config文件夹下新建文件config.env

NODE_ENV=development PORT=5000

复制上述代码到新创建的文件下

修改package.json文件

"start": "NODE_ENV=production node server",

当等于生产环境的时候,让我们运行 node server来启动项目

引入依赖和环境变量并使用

const express = require("express") const dotenv = require("dotenv") dotenv.config({ path:\'./config/config.env\', }); const app = express(); const PORT = process.env.PORT || 3000; app.listen(PORT,console.log(`Server rnning in ${process.env.NODE_ENV} mode on port ${PORT}`))

运行 npm run dev 会发现我们运行成功,监听到的是5000端口,这说明环境变量的和依赖的引入没有问题

创建路由

下面是Node接收get请求返回数据的几种方式

// :5000/ app.get("http://www.likecs.com/",(req,res)=>{ // res.send("<h1>Hello World</h1>") 发送HTML // res.send({mag:"Hello World"}) 发送json格式数据 // res.json({success:true}) 发送json格式数据 // res.sendStatus(400) 发送状态码 res.status(200).json({success:true,msg:"Hello World"}) //发送状态码和json数据 })

上面我们访问的都是根路径,现在我们尝试给他新的路由地址及尝试新的请求方法

// :5000/api:id app.get("/api/:id",(req,res)=>{ res.status(200).json({success:true,msg:`根据${req.params.id}获取单个数据`}) }) // :5000/api app.post("/api",(req,res)=>{ res.status(200).json({success:true,msg:`创建新的数据`}) }) // :5000/api:id app.put("/api/:id",(req,res)=>{ res.status(200).json({success:true,msg:`根据${req.params.id}更新数据`}) }) // :5000/api:id app.delete("/api/:id",(req,res)=>{ res.status(200).json({success:true,msg:`根据${req.params.id}删除数据`}) }) 路由文件分离

前面我们做到了创建各种接口,可以想象一下,如果项目足够大的话,把接口放在一起,是不是很不利于维护,接下来我们要做的就是把路由文件分离,拆分成一小块一小块。

在当前目录下新建routes文件夹,在routes文件夹下新建api.js,其中routes用来存放我们所有的接口,api文件存放访问/api这个路径下的接口
完整代码如下:

/routes/api.js

const express = require("express") const router = express() router.get("http://www.likecs.com/",(req,res)=>{ res.status(200).json({success:true,msg:"获取所有数据"}) }) router.get("/:id",(req,res)=>{ res.status(200).json({success:true,msg:`根据${req.params.id}获取单个数据`}) }) router.post("http://www.likecs.com/",(req,res)=>{ res.status(200).json({success:true,msg:`创建新的数据`}) }) router.put("/:id",(req,res)=>{ res.status(200).json({success:true,msg:`根据${req.params.id}更新数据`}) }) router.delete("/:id",(req,res)=>{ res.status(200).json({success:true,msg:`根据${req.params.id}删除数据`}) }) module.exports = router

server.js

const express = require("express") const dotenv = require("dotenv") const app = express() dotenv.config({ path:\'./config/config.env\', }); const api = require("./routes/api") app.use(\'/api\',api) const PORT = process.env.PORT || 3000; app.listen(PORT,console.log(`Server rnning in ${process.env.NODE_ENV} mode on port ${PORT}`))

上述代码中,我们通过require将api引入到了server.js中,并通过app.use()这个方法挂载到当访问/api路径时,将通过api这个文件来处理请求。

优化路由

api.js中,我们可以看到尽管请求方法不一样,但请求的路径大多相同,现在让我们来优化一下吧

在当前目录下新建文件夹controllers,在controllers文件夹下新建api.js,代码如下:
/controllers/api.js

exports.getApis = (req,res,next) => { res.status(200).json({success:true,msg:"获取所有数据"}); } exports.createApi = (req,res,next) => { res.status(200).json({success:true,msg:`创建新的数据`}) } exports.getApi = (req,res,next) => { res.status(200).json({success:true,msg:`根据${req.params.id}获取单个数据`}) } exports.updateApi = (req,res,next) => { res.status(200).json({success:true,msg:`根据${req.params.id}更新数据`}) } exports.deleteApi = (req,res,next) => { res.status(200).json({success:true,msg:`根据${req.params.id}删除数据`}) }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsfgy.html