接口这个东西在我们学习之中经常听见,那么node里面有哪些接口呢?
有get、post、delete、jsonp等,在我们写这些自定义接口的时候
//2.1 创建自己的路由
const express=require('express')
const router = express.Router()
//3.1 编写get接口
router.get('/get',(req,res)=>{
//3.2 获取客户端请求的字符串
const data = req.query
//3.3 将数据响应给客户端
res.send({
status:0, //0表示成功,1表示失败
massege:'Get请求',
data:data
})
})
//4.1 编写post接口
router.post('/post',(req,res)=>{
//4.2 获取客户端请求的请求体,注意要在服务器写解析
const body=req.body
//4.3 将数据响应给客户端
res.send({
status:0, //0表示成功,1表示失败
massege:'Get请求',
data:body
})
})
//7.1 编写delete接口
router.delete('/delete',(req,res)=>{
console.log('这是一个预检请求')
})
//2.2 向外暴露路由
module.exports = router
会发现,我们的响应头各不相同,那么浏览器将会限制我们的访问,也就是浏览器的域名访问限制,那么我们写的接口将不能被客户端请求到,要怎么处理呢?
其实只需要我们服务端对响应的响应头进行处理一下就可以:
const express=require('express')
const app=express()
//5.1 导入自己的路由模块
const router=require('./myRouter')
//8.1 安装并导入cors跨域资源共享模块
const cors=require('cors')
//4.4 设置解析全局中间件
app.use(express.urlencoded({extended:false}))
//6.1 jsonp的挂载
app.use('/api/jsonp', (req,res)=>{
//6.2 接受客户端请求函数名
const mathodname = req.query.callback
//6.3 创建自己需要响应给客户端的对象
const information={
bookname:'水浒传',
author:'施耐庵'
}
//6.4 进行字符串拼接成一个函数字符串
const myfunction=`${mathodname}${JSON.stringify(information)}`
//6.5 将拼接好的函数对象响应给客户端
res.send(myfunction)
})
//8.2 需要将jsonp放在cors中间件之前,不然的话jsonp会被忽略
app.use(cors())
//5.2 挂在自己的路由
app.use('/api',router)
//1.1 创建自己的服务器
app.listen(8080,()=>{
console.log('express running at http://127.0.0.1:8080')
})
在服务端,我们安装好cors这个模块,这个模块叫做域名资源共享,本质是对响应头做响应的处理;安装cors:
npm i cors
然后导入并使用:
//8.1 安装并导入cors跨域资源共享模块
const cors=require('cors')
//8.2 需要将jsonp放在cors中间件之前,不然的话jsonp会被忽略
app.use(cors())
说到请求头,那么有哪一些请求头呢?
1、Access-Contorl-Allow-Orgin:<origin>|*:该请求头是设置我们允许的域,如果在该请求头第二个参数设置那个网址,那么我们就允许那个域:
req.setHeader('Access-Contorl-Allow-Orgin','*');
这里设置为*说明允许所有;
2、声明请求头:Access-Contorl-Allow-Allow;
这个请求头可以让我们自定义允许的请求头:
req.setHeader('Access-Contorl-Allow-Allow','自定义请求头');
3、允许请求的方式请求头:Access-Contorl-Allow-Methods;
通过这个请求头,我们可以限制客户端访问的请求类型,比如get、post、delete;
req.setHeader('Access-Contorl-Allow-Methods','请求方式');
我们的请求按照响应分可分为简单请求和预检请求:
简单请求只有三种方式:get、post、head;而且http头部信息在几个常见的字段之内,没有自定义请求头,客户端只会响应一次;
而预检请求就是简单请求的对立面,而且浏览器会响应两次;
当点击了delete按钮的时候可以看到发起了两次请求;
好了,那么这期就结束了,关于接口,以后还会遇到,没理解没关系,后面还会有的;
关注我,更多分享!