数据请求方式的分类

所有的项目中使用的请求都遵循HTTP协议标准,HTTP协议经过了1.0和1.1两个版本的发展。

  • HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

  • HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

因此,我们可以说,HTTP协议一共定义了八种方法用来对Request-URI网络资源的不同操作方式,这些操作具体为:GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT等八种操作方式。

Iris框架的请求处理方式

  • 1、Iris框架中服务实例app中包含多个方法,用来支持对上述HTTP多种请求类型的直接处理,直接定义为get方法、post方法、put方法等,app中包含的自动处理路由请求的方法与http请求类型的分类一致。

  • 2、除了上述1中自动处理各类别的请求外,框架还支持使用通用的Handle方法来自定义编写自己的请求处理类型及对应的方法。

两种路由请求的处理方式示例如下:

app := iris.New()
​
//url: http://localhost:8000/getRequest
//type:GET请求
app.Get("/getRequest", func(context context.Context) {path := context.Path()app.Logger().Info(path)
})
​
//url: http://localhost:/user/info
//type:POST请求
app.Handle("POST", "/user/info", func(context context.Context) {context.WriteString(" User Info is Post Request , Deal is in handle func ")
})
​
//启动端口监听服务
app.Run(iris.Addr(":8000"))
​复制代码

GET请求

向特定的网络资源数据发起请求。GET请求可以携带请求数据,携带的请求数据会以?分割URL和传输数据,参数之间以&相连,比如http://localhost:3000?name=davie&pwd=123。 如下是一个http的get类型的请求:

http://localhost:8000/userpath复制代码

服务端的路由处理方式如下:

//url:http://localhost:8000/userpath
//type:GET请求、用GET方法处理
app.Get("/userpath", func(context context.Context) {
​//获取Pathpath := context.Path()//日志输出app.Logger().Info(path)//写入返回数据:string类型context.WriteString("请求路径:" + path)
})复制代码

上述为使用已经封装的默认的app.Get方式来处理请求,使用Handle方法来进行处理,如下所示:

//url:http://localhost:8000/hello
//type:GET请求、Handle方法第一个参数为GET,表明是GET请求方式
app.Handle("GET", "/hello", func(context context.Context) {context.HTML("<h1> Hello world. </h1>")
})复制代码

POST请求

POST请求在进行请求时会将请求数据放在请求body中进行请求,请求数据大小没有限制。在开发过程中,我们使用postman工具来进行POST请求的调试。 POST请求的示例如下所示:

http://localhost:8000/postLogin复制代码

服务端的路由处理方式如下:

//type:POST请求
//携带数据:name、pwd命名的请求数据
app.Post("/postLogin", func(context context.Context) {//获取请求pathpath := context.Path()//日志app.Logger().Info(path)//获取请求数据字段name := context.PostValue("name")pwd, err := context.PostValueInt("pwd")if err != nil {panic(err.Error())}app.Logger().Info(name, "  ", pwd)//返回context.HTML(name)
})复制代码

上述为使用默认路由请求方法Post方法来进行处理,同时,还可以使用Handle方法来进行处理,如下图:

//url:http://localhost:8000/user/info
//type:POST请求,Handle方法第一个参数为POST,表明是Post请求
app.Handle("POST", "/user/info", func(context context.Context) {context.WriteString(" User Info is Post Request , Deal is in handle func ")
})复制代码

PUT、DELETE、OPTIONS、HEAD等其他类型请求

除了上述GET、POST最为常见的两种请求方式以外,还有PUT、DELETE、OPTIONS、HEAD等其他类型请求,对于其他类型的请求,如同GET和POST请求一样,都是可以通过两种方式来进行处理:

  • 1、iris框架提供的自动识别请求类型的处理请求方法,如put方法、head方法、options方法、delete方法等

  • 2、使用通用的Handle方法对路由请求进行处理,开发者自己选择具体的请求类型以、对应url和要进行处理的func。

如下是put和delete的请求处理: PUT请求

//type:PUT类型请求
app.Put("/putinfo", func(context context.Context) {path := context.Path()app.Logger().Info("请求url:", path)
})复制代码

DELETE请求

//type:DELETE类型请求
app.Delete("/deleteuser", func(context context.Context) {path := context.Path()app.Logger().Info("Delete请求url:", path)
})复制代码

请求处理的数据格式返回

在本节课程中,我们已经学习了如何对不同类型的请求进行处理以及如何获取请求所携带的数据,当后台接收到请求后,将会对请求进行处理,处理完毕后将数据返回给请求的客户端。接下来,我们看一看如何将数据进行返回,以及都有哪些形式。

在进行请求处理时,处理方法func有一个参数context。Context是用于处理请求的上下文环境变量,用于处理http请求及相关数据返回。iris框架支持多种数据格式的返回,此处我们学习掌握返回string、json、xml以及html格式的数据。

返回string类型数据

context.WriteString("hello world")复制代码

返回json格式的数据

context.JSON(iris.Map{"message": "hello word", "requestCode": 200})复制代码

返回xml格式的数据

context.XML(Person{Name: "Davie", Age: 18})复制代码

返回html格式数据

context.HTML("<h1> Davie, 12 </h1>")复制代码

通过本节课的内容,我们学习了iris框架中的不同类型的数据请求以及返回不同的数据格式。

转载于:https://juejin.im/post/5c9b474a6fb9a0710504b4be

GoWeb开发_Iris框架讲解(二):Get、Post、Put等请求及数据返回格式相关推荐

  1. GoWeb开发_Iris框架讲解(三):路由功能处理方式

    Context概念 Context是iris框架中的一个路由上下文对象,在iris框架中的源码路径定义为:{$goPath}\github.com\kataras\iris\context\conte ...

  2. java发送post请求json格式_go语言web开发框架学习系列二:Get、Post、Put等请求及数据返回格式...

    数据请求方式的分类 所有的项目中使用的请求都遵循HTTP协议标准,HTTP协议经过了1.0和1.1两个版本的发展. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP ...

  3. 嵌入式开发|嵌入式软件框架《二》前后台任务框架-cola os系统

    系列文章目录 嵌入式开发|嵌入式软件框架<一>常用的软件框架介绍与选择 文章目录 系列文章目录 前言 一.cola os程序框架 1.cola_init 2.cola_device 3.c ...

  4. go语言web开发框架_Iris框架讲解(六):Session的使用和控制

    在实际的项目开发中,我们会经常有业务场景使用到Session功能.在iris框架中,也为我们提供了方便使用,功能齐全的Session模块.Session模块的源码目录为kataras/iris/ses ...

  5. C++强化之路之线程池开发整体框架(二)

    一.线程池开发框架 我所开发的线程池由以下几部分组成:  1.工作中的线程.也就是线程池中的线程,主要是执行分发来的task.  2.管理线程池的监督线程.这个线程的创建独立于线程池的创建,按照既定的 ...

  6. EasyPlayerPro(Windows)流媒体播放器开发之框架讲解

    EasyPlayerPro for Windows是基于ffmpeg进行开发的全功能播放器,开发过程中参考了很多开源的播放器,诸如vlc和ffplay等,其中最强大的莫过于vlc,但是鉴于vlc框架过 ...

  7. Android前台服务讲解二之自定义通知视图(RemoteViews)及数据UI更新

    Notification支持文字内容显示.震动.三色灯.铃声等多种提示形式,在默认情况下,Notification仅显示消息标题.消息内容.送达时间这3项内容. 1.更新系统通知Notificatio ...

  8. 微信小程序云函数服务器,微信小程序云开发(云函数) 使用got发出http、https 请求服务器数据(示例代码)...

    为什么使用云函数发送http请求? 1.不受5个可信域名限制 ,另外一个意思就是可以不是可信域名 2.所请求的域名可以不备案 注: 以上规则在笔者学习的时候还是有效的! 想要在云函数中发送http请求 ...

  9. 玩转iOS开发:NSURLSession讲解(三)

    文章分享至我的个人技术博客: https://cainluo.github.io/14986211698053.html 前言 虽然前面两讲都是说了NSURLSession的一些理论上的知识, 但我们 ...

  10. 从零开始搭建一个GIS开发小框架(一)——基本框架

    目录 1.概述 1.1 项目背景 1.2 传送门 2.技术选型:GMap.NET 3.底图功能实现 2.1 方式一:在线地图(以高德为例) 2.2 greatmaps生成底图(瓦片地图) 3.搭建主程 ...

最新文章

  1. 适用于具有Couchbase和WildFly的多容器和多主机应用程序的Docker Machine,Swarm和Compose...
  2. miniconda3 安装numpy_OpenCV4在Ubuntu1810/1604安装
  3. docker 安装部署 Jenkins 2.322
  4. u3d_shader_surface_shader_2
  5. 理解CSS3属性transition
  6. DB2 9 根本(730 磨练)认证指南,第 3 部门: 谋面 DB2 数据(4)
  7. 华为Verilog入门教程
  8. Word 公式编辑器: 快捷键
  9. 百度文库需要使用下载券的文档怎么下载
  10. CE 自带Tutorial -第9关
  11. 优麒麟使用教程第三期:Windows 平台 U 盘启动盘制作(建议收藏)
  12. nexus 启动报错 The nexus service was launched, but failed to start
  13. 基于API的ArrayList集合之学习记录
  14. win python虚拟环境安装
  15. java 和gps 建立连接_GPS 连接与定位
  16. 什么是职业测评?做职业测评有什么作用?
  17. Packetdrill(网络协议测试工具)
  18. 游戏开发者的成长之路:C++经典项目控制台贪吃蛇(在GitHub热门项目上增添功能及修改bug)
  19. 长连接-心跳保活机制
  20. 疫情期间“在家学”,视界云全面升级在线教育云服务解决方案

热门文章

  1. Mysql基本语句(个人笔记)
  2. media=screen是什么意思?
  3. 求一个序列中,第k个数
  4. React-Native 在 mac 下 build 问题
  5. Asp.Net Core 第03局:Startup
  6. Git只获取部分目录的内容
  7. Python.Algorithms(2nd)pdf
  8. day23 python学习 类 人狗大战
  9. WeBack(微信聊天记录导出)使用教程
  10. oracle 负载均衡连接方式常用SQL语句备忘录