get请求和post请求

news2024/11/27 18:30:32

get请求

1.get请求的特点

通过一个URL来访问一个地址,就比如说127.0.0.1:7001,这种请求方式就是get请求,get请求可以直接在URL中添加参数,通过URL来传递参数。

  • 优点:使用简单,清晰有条理,比较适合网站和App的使用。
  • 缺点:传递参数有长度限制,参数直接显示在地址栏中,安全性比较差,不能进行重要数据的传递。

2.get请求和post请求的区别

  • get参数通过url传递,post放在request body中。
  • get请求在url中传递的参数是有长度限制的,而post没有。
  • get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。
  • get请求只能进行url编码,而post支持多种编码方式。
  • get请求会浏览器主动cache,而post不会,除非主动设置。
  • get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。
  • GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

3.get请求的传参模式

① 自由传参模式

这种模式没有任何的限制,传递的参数个数不一定,甚至可以不传递参数,使用起来比较灵活。
在/app/controller/nq.js中,编写一个方法getBoy()。

async getBoy() {
        // 这种写法和上面的写法是一样的,只不过这种写法会重复写ctx
        const ctx = this.ctx;
        ctx.body = ctx.query;   //ctx.query就是获得的参数
    }

然后再router.js中添加路由。

router.get('/getBoy', controller.nq.getBoy);

此时通过浏览器访问http://127.0.0.1:7001/getBoy,页面上显示的是一个{}, 然后可以在地址栏中添加参数,比如 http://127.0.0.1:7001/getBoy?name=yanhaoxiang&age=18,页面中就会显示传递的参数。
在这里插入图片描述

② 严格传参模式

规定了传递参数个数,且传参数的顺序是固定的,参数名称也是固定的,如果不传参数,或者是不按照约定好的传参顺序和个数,就会显示404的错误。
在/app/controller/nq.js中,编写一个方法getBoy2().在这个方法中规定要传递的参数,然后在路由中配置需要传递的参数。

// 严格参数模式,不传参数会显示404,这个传参是在路由下完成的
    async getBoy2() {
        const ctx = this.ctx;
      // ctx.params是获取所有的传递参数
        ctx.body = 'getBoy2:'+ctx.params.name 
    }

然后在router.js中配置。

// 严格传参模式下的路由配置
  router.get('/getBoy2/:name', controller.nq.getBoy2);

这时候访问URL不是使用?来传递参数,而是直接使用/来传递,比如:http://127.0.0.1:7001/getBoy2/xiaohong/ ,这时候如果不传参数或者多传参数都会报错。
如果想要传递多个参数,可以直接在ctx.body后添加参数。

ctx.body = 'getBoy2:'+ctx.params.name + '今年'+ctx.params.age+'岁'

在router.js中配置多个需要传递的参数。

 router.get('/getBoy2/:name/:age', controller.nq.getBoy2);

其实相比自由传参,严格传参能够增加程序的健壮性,因此可以多多使用严格传参模式。

post请求

POST是在开发中经常使用的请求方式,比如表单数据的传递和图片的上传,都需要用到POST请求,这些是GET请求无法完成的。

1.post 请求在egg.js中的基本使用

首先,先书写一个新的方法只要能用post请求访问到即可。

async add() {
        const ctx = this.ctx;
        // 接收参数
        ctx.body = {
            status: 200,
            // ctx.request.body是通过请求传递过去的参数
            data:ctx.request.body           
        }
           
    }

接着,配置路由

 // post
  router.post('/add', controller.nq.add);

配置完之后就可以进行post请求了,但是post请求是没有办法直接在浏览器中就可以访问到的,因此需要用到一些工具,比如apifox,postman,这里老师介绍了一种新的办法,直接使用vscode中的插件 REST Client,来测试post请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166817.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十五天学会Autodesk Inventor,看完这一系列就够了(三),拉伸命令

众所周知,Autocad是一款用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。Autodesk Inventor软件也是美国AutoDesk公司推出的三维可视化实体模拟软件。因为很多人都熟悉Autocad,所以再学习Inventor&…

盘点2022年度A站UE神作top

A站大家都应该很熟悉了,在全球的CG行业都是属于专业化十分高的网站,平台内展示的内容包括影视、动画、娱乐等等板块,更是收录了众多大神艺术家的作品,多看看可以最直接的了解整个行业的审美趋势与技术动向。正好最近2022年A站人气…

数据结构:线性表的链式表示和实现

顺序表仅适用于不常进行插人和删除的线性表。因为在顺序存储表示的线性表中插入或删除一个数据元素,平均约需移动表中一半元素,这个缺陷是由于顺序存储要求线性表的元素依次“紧挨”存放造成的。因此对于经常需要进行插人和删除操作的线性表,就需要选择其他的存储表示方法。现在…

C进阶:文件的基础操作

本文主要讲解文件基础操作的知识。 目录 一.文件指针 二.文件的打开和关闭 1.文件的打开 打开文件我们需要使用到 fopen 函数; 注意(文件扩展名): 2.文件的关闭 三.文件的读写 1.读与写,输出与输入的概念 ​编…

VueUse(中文)——简介

一、VueUse——简介 VueUse是由Anthony Fu等大佬写的基于Vue的自定义钩子集合。类似于基于React的 ahooks功能丰富:200功能无缝迁移:适用于Vue 3和Vue2.7版本之后支持tree shaking:只引入自己需要的那部分,打包会更小还有其他的亮…

Chrome V3版开发教程使用Vue 3.x+Ant构建项目

简介 ​ Google在2023年将会遗弃V2版本,而目前在CSDN平台上的大部分Chrome插件的开发教程都是基于V2版本的,V3版本和V2的版本上还是有很大的区别,就比如manifest.json中的写法差距就很大,所以对于即将要开发Chrome插件的小伙伴来…

机器学习的相关概念与建模流程

文章目录一、机器学习简介1. 机器学习的相关定义2. 一次简单的机器学习任务:鸢尾花分类二、数据与数据集相关概念1. 数据与数据集2. 特征与标签3. 连续变量和离散变量4. 模型类型三、机器学习建模一般流程1. 提出基本模型2. 确定损失函数3. 根据损失函数性质&#x…

Servlet —— Smart Tomcat,以及一些访问出错可能的原因

JavaEE传送门JavaEE HTTPS —— HTTPS的加密方式 Servlet —— Tomcat, 初学 Servlet 程序 目录Smart TomcatSmart Tomcat 的下载配置 Smart Tomcat 插件访问出错404405500无法访问此网站Smart Tomcat 在上一篇文章中, 我们手动拷贝 war 包到 Tomcat 中的过程比较麻烦, 我们…

解析 json,整理分散数据入库

【问题】在 json 文件中有以下内容:现在需要将 json 中分散的数据整理入库。“LIST”中包含多个子孙记录,主要目标是”GROUPNAME”、”SERVICES”。“GROUPNAME”值、”SERVICES”中的键编号对应了数据库表 _groups 的 Groupname 和 ID。“SERVICES”每个…

PicGo+Gitee+Typora实现markdown图床

PicGoGitee实现markdown图床 情景概要 写博客的时候,总是需要插入图片的,图片存在本地的话上传到博客网站去就没法显示了 就算一个图一个图的复制粘贴上去,想移植到其他的博客网站,图就会失效,我们就需要图床 图床 …

系分 - 案例分析 - 项目管理

个人总结,仅供参考,欢迎加好友一起讨论 文章目录系分 - 案例分析 - 项目管理时间管理进度管理典型例题题目描述参考答案系分 - 案例分析 - 项目管理 时间管理 进度管理 ① 项目进度管理包括为管理项目按时完成所需的7个过程,具体为&#xf…

MyBatis-Plus数据安全保护(字段脱敏)

项目创建POM依赖 <dependency><!--MyBatis-Plus 企业级模块--><groupId>com.baomidou</groupId><artifactId>mybatis-mate-starter</artifactId><version>1.2.8</version> </dependency> YML配置 spring:datasource:# 配…

熟悉Spring框架?Spring容器使用流程,注解 你真的会吗?(让你一下通透~)

目录 前言 一、ApplicationContext 和 BeanFactory 的区别 二、主要工作流程 三、开发步骤 3.1、创建Maven项目 3.2、创建Spring的核心配置文件 3.3、Spring注解 3.3.1、类注解 3.3.2、五大类注解的关系 3.3.3、方法注解 3.3.4、属性注入 3.3.5、五大注解关系图&am…

【03】FreeRTOS的任务创建(静态和动态)和删除

目录 1.任务创建和删除的API函数 1.1动态创建任务函数 1.1.1实现动态创建任务流程 1.1.2任务控制块结构成员介绍 1.2静态创建任务函数 1.2.1实现静态创建任务流程 1.3任务删除函数 1.3.1删除任务流程 2.任务创建和删除&#xff08;动态方法&#xff09; 2.1宏confi…

一文掌握项目估算工具及方法【管理有度13】

01为什么要做估算我们的业务方经常抱怨资源不足&#xff0c;团队需求的吞吐率太低&#xff0c;资源和需求量的不匹配是一个永恒的话题&#xff0c;解决方案应该不只是增加资源&#xff0c;增加了资源如果需求的输入量不能稳定保证&#xff0c;那资源就会处于持续浪费的状态当中…

项目管理:项目控制的三个基本原则

要记住项目控制是怎么回事&#xff0c;一个简单方法是思考PDA。PDA是指预防、检测和行动。让我们仔细看看项目控制的这些基本原则。 1、预防 就像你自己的健康一样&#xff0c;健康的秘诀是加强你的免疫系统&#xff0c;尽量减少与有害物的接触。换句话说&#xff0c;就是不…

谷歌账号被封怎么办?谷歌账号解封申诉步骤请收好!

谷歌账号有多重要&#xff1f;相信很多跨境人和社媒营销人都会深有感悟的&#xff0c;谷歌账号可以说是国外互联网的一个通行证&#xff0c;国外非常多的网站都是支持使用谷歌账号登录的。 谷歌账号对企业进军海外市场是非常重要的存在&#xff0c;然而谷歌账号一旦操作不当是很…

Go语言变量

Go语言变量 参考资料主要来源于菜鸟教程。 参考链接&#xff1a;https://blog.51cto.com/u_15230485/2821028 变量来源于数学&#xff0c;是计算机语言中能存储计算结果或能表示值抽象概念。 变量可以通过变量名访问。 Go语言变量名由字母、数字、下划线组成&#xff0c;其中首…

Vector和ArrayList对比

本文会对ArrayList和Vector进行分析&#xff0c;为什么会关注这两个类&#xff0c;主要是因为他们拥有相同的继承结构&#xff0c;接下来就来探索下这两个类实现和效率的异同。 继承结构 可以看到&#xff0c;Vector和ArrayList都实现了List和RandomAccess接口&#xff0c;都继…

C语言——常用字符串库函数的介绍

文章目录常用字符串库函数介绍1.1关于字符串简介1.2:[strlen库函数](https://legacy.cplusplus.com/reference/cstring/strlen/?kwstrlen)1.2.1strlen函数的功能1.2.2strlen函数的参数和返回类型1.2.3strlen函数使用注意事项1.2.4strlen的使用1.2.5模拟实现strlen函数1.3:[str…