全部的項目中使用的請求都遵循HTTP協議標準,HTTP協議通過了1.0和1.1兩個版本的發展。 html
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。json
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。bash
所以,咱們能夠說,HTTP協議一共定義了八種方法用來對Request-URI網絡資源的不一樣操做方式,這些操做具體爲:GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT等八種操做方式。 網絡
一、Iris框架中服務實例app中包含多個方法,用來支持對上述HTTP多種請求類型的直接處理,直接定義爲get方法、post方法、put方法等,app中包含的自動處理路由請求的方法與http請求類型的分類一致。app
二、除了上述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請求能夠攜帶請求數據,攜帶的請求數據會以?分割URL和傳輸數據,參數之間以&相連,好比http://localhost:3000?name=davie&pwd=123。 以下是一個http的get類型的請求: post
http://localhost:8000/userpath複製代碼
服務端的路由處理方式以下: 學習
//url:http://localhost:8000/userpath
//type:GET請求、用GET方法處理
app.Get("/userpath", func(context context.Context) {
//獲取Path
path := context.Path()
//日誌輸出
app.Logger().Info(path)
//寫入返回數據:string類型
context.WriteString("請求路徑:" + path)
})複製代碼
上述爲使用已經封裝的默認的app.Get方式來處理請求,使用Handle方法來進行處理,以下所示: ui
//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請求在進行請求時會將請求數據放在請求body中進行請求,請求數據大小沒有限制。在開發過程當中,咱們使用postman工具來進行POST請求的調試。 POST請求的示例以下所示:
http://localhost:8000/postLogin複製代碼
服務端的路由處理方式以下:
//type:POST請求
//攜帶數據:name、pwd命名的請求數據
app.Post("/postLogin", func(context context.Context) {
//獲取請求path
path := 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 ")
})複製代碼
除了上述GET、POST最爲常見的兩種請求方式之外,還有PUT、DELETE、OPTIONS、HEAD等其餘類型請求,對於其餘類型的請求,如同GET和POST請求同樣,都是能夠經過兩種方式來進行處理:
一、iris框架提供的自動識別請求類型的處理請求方法,如put方法、head方法、options方法、delete方法等
二、使用通用的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格式的數據。
context.WriteString("hello world")複製代碼
context.JSON(iris.Map{"message": "hello word", "requestCode": 200})複製代碼
context.XML(Person{Name: "Davie", Age: 18})複製代碼
context.HTML("<h1> Davie, 12 </h1>")複製代碼
經過本節課的內容,咱們學習了iris框架中的不一樣類型的數據請求以及返回不一樣的數據格式。