node.js:<8>关于node的接口的理解

接口这个东西在我们学习之中经常听见,那么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按钮的时候可以看到发起了两次请求;

好了,那么这期就结束了,关于接口,以后还会遇到,没理解没关系,后面还会有的;

关注我,更多分享!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编程学渣ズ

谢谢老板

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

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

打赏作者

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

抵扣说明:

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

余额充值