zoukankan      html  css  js  c++  java
  • 学习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

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

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

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

    后续

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

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

  • 相关阅读:
    自己的第一个网页
    第一次爬虫测试
    科学计算与可视化
    python自顶向下的设计方法进行体育竞技分析
    python PIL库的相关操作
    python 关于身份证号码的相关操作
    jieba库
    汉诺塔
    Django项目中运行Scrapy项目
    **Django+Echart实现多个饼状图(echart数据格式问题 {value: 135, name: '视频广告'})
  • 原文地址:https://www.cnblogs.com/armouy/p/12241489.html
Copyright © 2011-2022 走看看