学习koa开发API(三)--- OPTIONS请求的理解和处理

HTTP的Method

上文中我们学习了用koa-router请求不同的url,而且我们还使用了不同的method。

http的请求方式,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT等八种请求方式。其中,get与post只是我们常用的请求方式。此次我们主要学习一下option请求。

options的定义

OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。

简单的解释就是我们在发送请求时,浏览器会发送一次预检请求,获得服务端返回的信息,看后台是否允许进行访问。

如何产生options请求

  • 跨域请求;

  • 自定义请求头;

  • 请求头中的content-typeapplication/x-www-form-urlencoded,multipart/form-data,text/plain之外的格式。

处理OPTIONS

为了方便后期前端在调用复杂请求或者跨域的情况下,我们的接口能有良好的反馈,所以我们需要使用allowedMethods

现在我们的代码是这样的:

router.get("/banners",(ctx,next)=>{
  ctx.body = "获得get banners";
});
router.post("/banners",(ctx,next)=>{
  ctx.body = "post banners";
});

当我们在postman调用http://localhost:3000/mall/banners时使用的是options方法时,返回的是NOT FOUND。

我们在添加这样一行代码:

app.use(router.allowedMethods());

再调用一次请求,返回体为空,查看headers

学习koa开发API(三)--- OPTIONS请求的理解和处理

它会告诉我们这个请求支持这样几种方法。

注释掉app.use(router.allowedMethods());,在postman调用http://localhost:3000/mall/banners时使用的是以上三种方法(HEAD GET POST)之外的方法时,结果是NOT FOUND,

加上app.use(router.allowedMethods());是这样的结果:

学习koa开发API(三)--- OPTIONS请求的理解和处理

后续

昨天本来是想做商城API开发,想了想工作量有点大,要考虑的也多,怕后续顾着写业务了...虽然假期变长了~不过还是希望疫情早日稳定,大家早日康复。

从原先想做商城API改成做个豆瓣影评的东西,不过总体还没考虑好,希望后期能坚持2333~

学习koa开发API(三)--- OPTIONS请求的理解和处理

上一篇:1. RevitAPI 基础(上)


下一篇:深入理解C# 第三版学习笔记