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~

  • 相关阅读:
    Codeforces 1190C Tokitsukaze and Duel game
    2019牛客多校第一场E ABBA 贪心 + DP
    Codeforces 1195E OpenStreetMap 单调队列套单调队列
    由 Vue 中三个常见问题引发的深度思考
    jszip打包上传下载
    Ubuntu切换登录用户和root用户
    vue2.0右键菜单
    main.js中import引入css与引入js的区别
    node和npm版本引起的安装依赖和运行项目失败问题
    reduce()之js与python
  • 原文地址:https://www.cnblogs.com/armouy/p/12241489.html
Copyright © 2011-2022 走看看