小伙伴们都知道,常用的http请求有两种方式,即GET方法和POST方法,很多刚入门的童鞋难免都会有一个误区,是不是GET是从服务器上获取数据,POST是向服务器传送数据?

我的理解是:不论是GET还是POST,都是向服务器提交数据,并且请求之后都会从服务器获取数据,两者的区别仅是传送方式不同而已,GET通过地址栏传输,POST通过报文传输。对资源的增删改查操作其实都可以通过get/post方法来实现,下面就详细介绍一下这两种方法:

一、请求原理以及方式:

1、GET 请求

GET请求不存在请求实体部分,键值对参数放置在 URL 尾部,浏览器把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串追加到url后面,用?分割,加载这个新的url。因此请求头不需要设置 Content-Type字段。

非 ASCII 码会自动进行编码转换,例如发送请求:www.lalalal.com?haha=哈哈    。

值得一提的是,GET 参数的编码方式是无法人为干涉的,这导致了不同浏览器有不同的编码方式,因此最稳妥的方案是人工预编码,人工解码,从而禁止浏览器编码的干涉。

2、POST 请求

POST把提交的数据则放置在是HTTP包的包体中。Http Header里的Content-Type一般有好几种方式,但是我自己接触到的是以下两种方式:

a)   application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。会将表单内的数据转换拼接成 key-value 对(非 ASCII 码进行编码)

b)   application/json:由于JSON 格式支持比键值对复杂得多的结构化数据,这一点现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。本文就是重点介绍这种方式。

二、后端获取参数的方式

对于后台接受来自前台的请求时,且Content-Type为application/json时,可以传递参数也可以不传递参数,但是多数情况下是需要有参数传来的,所以,下面就只介绍有参数传过来的情形:

1、获取GET参数 Get:([FromQuery] User user)

[fromQuery]是告诉模型绑定在解析的过程中从HttpContext中那一部分获取信息。

2、获取POST参数 Post:([(FromBody)] User user)

[FromBody] 是参数绑定的过程中,告诉框架该参数是使用配置过的格式化程序从Http Body 中解析。和get不同的是,在接受参数的时候必须要先建立一个实体类来接受参数,并且该实体类必须与前端的请求参数一模一样。

.net core MVC接受来自自前端的GET和POST请求方法的区别的更多相关文章

  1. ASP.NET Core MVC使用MessagePack配合前端fetch交换数据

    1.安装Nuget包 - WebApiContrib.Core.Formatter.MessagePack https://www.nuget.org/packages/WebApiContrib.C ...

  2. 【前端】CSS隐藏元素的方法和区别

    CSS隐藏元素的方法和区别 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. web前端面试第一次[javascript函数和方法的区别]

    //函数 function f1(){ console.log("我是函数"); } //调用函数 f1(); //创建一个空对象 var obj = {} //把函数定义到对象里 ...

  4. ASP.NET Core MVC 之模型(Model)

    1.模型绑定 ASP.NET Core MVC 中的模型绑定将数据从HTTP请求映射到操作方法参数.参数既可以是简单类型,也可以是复杂类型.MVC 通过抽象绑定解决了这个问题. 2.使用模型绑定 当 ...

  5. asp.net core mvc权限控制:权限控制介绍

    在进行业务软件开发的时候,都会涉及到权限控制的问题,asp.net core mvc提供了相关特性. 在具体介绍使用方法前,我们需要先了解几个概念: 1,claim:英文翻译过来是声明的意思,一个cl ...

  6. ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门

    一.前言 1.本文主要内容 ASP.NET Core MVC路由工作原理概述 ASP.NET Core MVC带路径参数的路由示例 ASP.NET Core MVC固定前/后缀的路由示例 ASP.NE ...

  7. ASP.NET Core MVC 概述

    https://docs.microsoft.com/zh-cn/aspnet/core/mvc/overview?view=aspnetcore-2.2 ASP.NET Core MVC 概述 20 ...

  8. ASP.NET Core 入门笔记4,ASP.NET Core MVC路由入门

    敲了一部分,懒得全部敲完,直接复制大佬的博客了,如有侵权,请通知我尽快删除修改 摘抄自https://www.cnblogs.com/ken-io/p/aspnet-core-tutorial-mvc ...

  9. ASP.NET Core MVC如何上传文件及处理大文件上传

    用文件模型绑定接口:IFormFile (小文件上传) 当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发AS ...

随机推荐

  1. 控件的WndProc WindowProc

    SubClassWndProc This example shows how to use the WndProc method and the WindowProc property to subc ...

  2. 【Consul】Consul实践指导-配置文件

    Agent有各种各样的配置选项,这些配置选项可以通过命令行参数的方式设定,也可用通过配置文件的方式设定--所有的配置选项都是可选的,当然也是有默认值的. 当加载配置选项时,consul是按照词典顺序从 ...

  3. rails 部署 nginx + passenger

    转自 http://segmentfault.com/a/1190000002911605 https://ruby-china.org/topics/16245 运行 RAILS_ENV=produ ...

  4. Django一些技巧

    整数限制范围 from django.core.validators import MaxValueValidator, MinValueValidator start = models.Intege ...

  5. Tmux (转)

    Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“ ...

  6. UINavigation,UiView,ModalView Controller之间的关系

    如果当前是个VC,那么就太简单了,直接就可以push到下一个vc AddShopViewController *controller = [[AddShopViewController alloc] ...

  7. beego 自定义模板函数

    beego支持的模板函数不是很多,有时候前端展现数据的时候,要对数据进行格式化,所以要用到自定义模板函数 比如我的前端模板上有时间和模板大小这2个数据,原始数据都是int的时间戳和byte单位的数据, ...

  8. ATM取款机的数据库模拟开发和实战总结

    一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现高端的业务.有兴趣的可以看看,希望对同胞 ...

  9. MYSQL中GROUP BY的细节及SELECT语句顺序

    一.GROUP BY语句的细节 我们知道,在sql中,GROUP BY语句主要用来给数据分组,以便能对每个组进行聚集计算,但是GROUP BY也有一些限制需要知道: 1. GROUP BY字句可以包含 ...

  10. 虚拟化技术:Xen与KVM的对比

    作为开源的虚拟化技术,对比Xen和KVM可以看到,Xen以6个无与伦比的优势领先:更好的可用资源.平台支持.可管理性.实施.动态迁移和性能基准. 可用资源:Xen的问世要比KVM早4年之久(两者分别是 ...