1. Iris起服务

package main

import "github.com/kataras/iris"

func main() {
//1.创建app结构体对象
app := iris.New() //返回一个application
//2.端口监听(启动服务本质就是监听端口)
//iris.WithoutServerError 设置错误
app.Run(iris.Addr(":7999"), iris.WithoutServerError(iris.ErrServerClosed))
//也可以不设置错误
//application.Run(iris.Addr(":8080"))
//application.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed)) //第二种 }

2. 数据请求方式的分类

所有的项目中使用的请求都遵循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等八种操作方式。

请求方式:

package main

import (
"github.com/kataras/iris"
"github.com/kataras/iris/context"
) func main() { app := iris.New()
//第一个参数是路径
//第二个是匿名函数,处理请求
app.Get("/getRequest", func(context context.Context) {
//处理get请求,请求的url为:/getRequest
path := context.Path()
//以日志的方式打印
app.Logger().Info(path) //2020/02/05 07:17 /getRequest
}) //1.处理Get请求
app.Get("/userpath", func(context context.Context) {
//获取Path
path := context.Path()
app.Logger().Info(path) //2020/02/05 07:18 /userpath
//写入返回数据:string类型
context.WriteString("请求路径:" + path)
}) //2.处理Get请求 并接受参数
//http://localhost:8000/userinfo?username=yang&pwd=123456
app.Get("/userinfo", func(context context.Context) {
path := context.Path()
app.Logger().Info(path)
//获取get请求所携带的参数
userName := context.URLParam("username")
app.Logger().Info(userName) pwd := context.URLParam("pwd")
app.Logger().Info(pwd)
//返回html数据格式
context.HTML("<h1>" + userName + "," + pwd + "</h1>")
}) //3.处理Post请求 form表单的字段获取
app.Post("/postLogin", func(context context.Context) {
path := context.Path()
app.Logger().Info(path)
//context.PostValue方法来获取post请求所提交的form表单数据
name := context.PostValue("name")
pwd := context.PostValue("pwd")
app.Logger().Info(name, " ", pwd)
context.HTML(name)
}) //4.处理Post请求 Json格式数据 //Postman工具选择[{"key":"Content-Type","value":"application/json","description":""}]
//请求内容:{"name": "davie","age": 28} app.Post("/postJson", func(context context.Context) { //1.path
path := context.Path()
app.Logger().Info("请求URL:", path) //2.Json数据解析
var person Person
//通过context.ReadJSON()读取传过来的数据
if err := context.ReadJSON(&person); err != nil {
panic(err.Error())
}
//返回格式化的内容
context.Writef("Received: %#+v\n", person)
}) //5.处理Post请求 Xml格式数据
/*
* 请求配置:Content-Type到application/xml(可选但最好设置)
* 请求内容:
*
* <student>
* <stu_name>davie</stu_name>
* <stu_age>28</stu_age>
* </student>
*
*/
app.Post("/postXml", func(context context.Context) { //1.Path
path := context.Path()
app.Logger().Info("请求URL:", path) //2.XML数据解析
var student Student
if err := context.ReadXML(&student); err != nil {
panic(err.Error())
}
//返回格式化的内容
context.Writef("Received:%#+v\n", student)
}) //6.put请求
app.Put("/putinfo", func(context context.Context) {
path := context.Path()
app.Logger().Info("请求url:", path)
}) //7.delete请求
app.Delete("/deleteuser", func(context context.Context) {
path := context.Path()
app.Logger().Info("Delete请求url:", path)
}) app.Run(iris.Addr(":8000"), iris.WithoutServerError(iris.ErrServerClosed))
} //自定义的struct
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
} //自定义的结构体
type Student struct {
//XMLName xml.Name `xml:"student"`
StuName string `xml:"stu_name"`
StuAge int `xml:"stu_age"`
} type config struct {
Addr string `yaml:"addr"`
ServerName string `yaml:"serverName"`
}

数据返回类型:

package main

import (
"github.com/kataras/iris"
"github.com/kataras/iris/context"
) type Teacher struct {
Name string `json:"Name"`
City string `json:"City"`
Other string `json:"Other"`
} //程序主入口
func main() { app := iris.New() /**
* 通过Get请求
* 返回 WriteString
*/
app.Get("/getHello", func(context context.Context) {
context.WriteString(" Hello world ")
}) /**
* 通过Get请求
* 返回 HTML数据
*/
app.Get("/getHtml", func(context context.Context) {
context.HTML("<h1> Davie, 12 </h1>")
}) /**
* 通过Get请求
* 返回 Json数据
*/
app.Get("/getJson", func(context context.Context) {
context.JSON(iris.Map{"message": "hello word", "requestCode": 200})
}) //POST
app.Post("/user/postinfo", func(context context.Context) {
//context.WriteString(" Post Request ")
//user := context.Params().GetString("user") var tec Teacher
err := context.ReadJSON(&tec)
if err != nil {
panic(err.Error())
} else {
app.Logger().Info(tec)
context.WriteString(tec.Name)
} //fmt.Println(user)
//teacher := Teacher{}
//err := context.ReadForm(&teacher)
//if err != nil {
// panic(err.Error())
//} else {
// context.WriteString(teacher.Name)
//}
}) //PUT
app.Put("/getHello", func(context context.Context) {
context.WriteString(" Put Request ")
}) app.Delete("/DeleteHello", func(context context.Context) {
context.WriteString(" Delete Request ")
}) //返回json数据
app.Get("/getJson", func(context context.Context) {
context.JSON(iris.Map{"message": "hello word", "requestCode": 200})
}) app.Get("/getStuJson", func(context context.Context) {
context.JSON(Student{Name: "Davie", Age: 18})
}) //返回xml数据
app.Get("/getXml", func(context context.Context) {
context.XML(Person{Name: "Davie", Age: 18})
}) //返回Text
app.Get("/helloText", func(context context.Context) {
context.Text(" text hello world ")
}) app.Run(iris.Addr(":8000"), iris.WithoutServerError(iris.ErrServerClosed)) } //json结构体
type Student struct {
Name string `json:"name"`
Age int `json:"age"`
} //xml结构体
type Person struct {
Name string `xml:"name"`
Age int `xml:"age"`
}

Iris请求方式和数据返回类型的更多相关文章

  1. Postman 的 Post 请求方式的四种类型的数据

    Postman 的 Post 请求方式的四种类型的数据 1. form-data 2. x-www-form-urlencoded 3. raw 4. binary 1. form-data 就是 H ...

  2. Nginx下HTML页面POST请求静态JSON数据返回405状态

    在浏览器访问HTML页面,发现一些静态JSON数据没有显示,F12查看,如下图所示: 可以看到请求方式为POST 将请求链接复制在浏览器地址栏访问,可以正常请求到数据 F12查看,可以看到请求方式为G ...

  3. jquery ajax请求成功,数据返回成功,seccess不执行的问题

    1.状态码返回200--表明服务器正常响应了客户端的请求:       2.通过firebug和IE的httpWatcher可以看出服务器端返回了正常的数据,并且是符合业务逻辑的数据.         ...

  4. Postman的Post请求方式的四种类型的数据

    1. form-data 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开.既可以上传键值对,也可以上传文件.当上传的字段是文件时 ...

  5. 前端使用node.js+express+mockjs+mysql实现简单服务端,2种方式模拟数据返回

    今天,我教大家来搭建一个简单服务端 参考文章: https://www.jianshu.com/p/cb89d9ac635e https://www.cnblogs.com/jj-notes/p/66 ...

  6. C# WebApi 请求方式Post,返回Response

    1.[FromBody]属性只能用在一个参数上,当Body中有多个参数要定义类型.一个参数的时候 key="",value="123",key为空才能取到值. ...

  7. 使用jquery通过AJAX请求方式,后台返回了当前整个HTML页面代码

    该结果分为多种情况: 1.当前项目使用了interceptor/filter,拦截或者过滤了特定请求. 2.在HTML页面使用了表单提交,没有对表单的“onsubmit”事件做return false ...

  8. rest接口webservice接口利用http请求方式发送数据

    所需依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>h ...

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

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

随机推荐

  1. linux100讲——03 什么是linux

    1.linux 有两种含义: 一种是linus 编写的开源操作系统的内核 另一种是广义的操作系统 2.linux的第一印象 服务端操作系统和客户端操作系统要做的事情不一样 命令行操作方式与图形界面的差 ...

  2. .Net Core的总结

    一.什么是.NET Core .NET Core是一个开源通用的开发框架,支持跨平台,即支持在Window,macOS,Linux等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式/物联网方案 ...

  3. 假期学习【八】首都之窗百姓信件爬虫(完整版)2020.2.6 Python

    时间:2020.2.6 今天把昨天做到一半的首都之窗百姓信件爬取完成了. 源码如下: import requests import io from bs4 import BeautifulSoup # ...

  4. 洛谷P1765 手机_NOI导刊2010普及(10) 关于cin和getline的一些区别 以及一些STL

    一. cin>>s:cin>>是由两部分构成的,cin和>>,其中cin是输入流istream类的一个对象,隶属于iostream函数库而>>则是运算符 ...

  5. Java8之Stream详解

    Java8中提供了Stream对集合操作作出了极大的简化,学习了Stream之后,我们以后不用使用for循环就能对集合作出很好的操作.   一.流的初始化与转换   Java中的Stream的所有操作 ...

  6. 打铁选手的 CDQ分治 刷题记录

    BZOJ3262 模板题,三位偏序. 注意第一维排完序之后再给二三维排序的时候还是要考虑下第一维的:如果二三维都相等的话第一维小的要在前面 代码: #include <bits/stdc++.h ...

  7. MVC理解(全程白话不拽词)

    我所发的所有博客只为了给想干程序员,但是基础没有或者很差,刚入职场的人 所有的观点不一定准确,我不懂的或者不理解的都会备注出来 先说MVC MVC理解为:M  =  Model  =  数据库表里面每 ...

  8. Selenium3+python自动化009-iframe定位

    iframe 一.frame:HTML页面中的一种框架,主要作用是在当前页面中指定区域显示另一页面元素: 二.操作Frame中的页面元素 定位元素: 1.id定位driver.switch_to.fr ...

  9. C++中多态实现的关键——虚函数

    1.多态的作用 在面向对象程序设计中,使用多态能够增强代码的可扩充性,,即程序需要增加或修改部分功能时,只需修改少量代码就能够达到目的,此外多态也能起到精简代码的作用. 而实现多态的关键点,就是虚函数 ...

  10. Python Turtle模块的简单应用

    时钟 import turtle as t import datetime as dt #画出背景 game = t.Screen() game.bgcolor("white") ...