【Node】使用express编写接口 Day2

本文为笔者学习Node笔记,待完善,欢迎一起交流学习。

一、准备工作

1.创建基本服务器

//导入express
const express = require('express')

//创建web服务器
const app = express()

//启动服务器
app.listen(8083,()=>{
    console.log('express server running at http://127.0.0.1:8083')
})

2.创建API路由模块

const express = require('express')
 
const router = express.Router()
 
//在这里挂载对应的路由
 
module.exports = router

3.将创建好的路由模块导入至服务器文件内

const express = require('express')
const router = require('./8.apiRouter') 
const app = express()

app.use('/api', router)

app.listen(8083, () => {
    console.log('http://127.0.0.1:8083');
})

二、基本使用

1.编写GET接口

在路由文件内写如下代码:

//在这里挂载对应的路由
router.get('/get',(req,res)=>{
	//获取到客户端通过查询字符串,发送到服务器的数据
    const query = req.query;
    //调用res.send()方法,把数据响应给客户端
    res.send({
        status:0,//0表示成功,1表示失败
        message:"GET请求成功",//状态的描述
        data:query//需要响应的数据
    })
})

使用Post man 请求结果如下:

在这里插入图片描述

2.编写POST接口

如果要获取URL-encoded格式的请求体数据,必须要在服务器js文件里配置解析表单数据的中间件:

//配置解析表单数据的中间件
app.use(express.urlencoded({extended:false}))

在路由文件内写如下代码:

router.post('/post', (req, res) => {
    //通过req.body获取请求体中包含的url-encoded格式的数据
    const body = req.body
    res.send({
        status: 0,//0表示成功,1表示失败
        message: "POST请求成功",//状态的描述
        data: body//需要响应的数据 
    })
})

使用Post man 请求结果如下:

在这里插入图片描述

三、全部代码

1.服务器文件

const express = require('express')
const router = require('./8.apiRouter')
const app = express()

//配置解析表单数据的中间件
app.use(express.urlencoded({extended:false}))

app.use('/api', router)

app.listen(8083, () => {
    console.log('http://127.0.0.1:8083');
})

2.路由文件

const express = require('express')
const router = express.Router()

router.get('/get', (req, res) => {
    const query = req.query
    res.send({
        status: 0,//0表示成功,1表示失败
        message: "GET请求成功",//状态的描述
        data: query//需要响应的数据
    })
})

router.post('/post', (req, res) => {
    //通过req.body获取请求体中包含的url-encoded格式的数据
    const body = req.body
    res.send({
        status: 0,//0表示成功,1表示失败
        message: "POST请求成功",//状态的描述
        data: body//需要响应的数据 
    })
})
module.exports = router

四、跨域问题

1.使用CORS中间件解决跨域问题

CORS是Express的一个第三方中间件,通过安装和配置CORS中间件,可以很方便的解决跨域问题。
使用步骤如下:

  1. 运行npm i cors 安装中间件
  2. 使用const cors = require(‘cors’) 导入中间件
  3. 在路由之前调用app.use(cors()) 配置中间件

2.CORS响应头部 Access-Control-Allow-Origin

响应头部中可以携带一个Access-Control-Allow-Origin字段,其语法如下:

Access-Control-Allow-Origin: <origin> | *

其中,origin参数的值指定了允许访问该资源的外域URL

例如,下面的字段值只允许来自https://www.baidu.com的请求:

res.setHeader('Access-Control-Allow-Origin','https://www.baidu.com')

如果指定字段值为通配符*,则表示允许来自任何域的请求:

res.setHeader('Access-Control-Allow-Origin','*')

3.CORS响应头部 Access-Control-Allow-Headers

默认情况下,CORS 仅支持客户端向服务器发送如下9个请求头:
Accept、Accept-Language、Content-Language、DPR、Downlink、Save-Data、Viewport-Width、Width、Content-Type(值仅限于text/plain multipart/form-data application/x-www-form-urlencoded三者之一)

如果客户端向服务器发送了额外的请求头,则需要在服务器端,通过此响应头对额外的请求头进行声明,否则这次请求会失败

使用方法:

res.setHeader('Access-Control-Allow-Headers','Content-Type,X-Custom-Header')

4.CORS响应头部 Access-Control-Allow-Methods

默认情况下,CORS仅支持客户端发起GET,POST,HEAD请求。

如果客户端希望通过PUT、DELETE等方式请求服务器资源,则需要在服务器端,通过Access-Control-Allow-Methods来指明实际请求所允许使用的HTTP方法
使用方法:

//只允许使用POST、GET、DELETE、HEAD请求方法
res.setHeader('Access-Control-Allow-Methods','POST','GET','DELETE','HEAD')

//允许所有的HTTP请求方法
res.setHeader('Access-Control-Allow-Methods','*')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呈两面包夹芝士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值