Go語言服務(wù)器開發(fā)實現(xiàn)最簡單HTTP的GET與POST接口
更新時間:2015年02月08日 14:58:46 作者:books1958
這篇文章主要介紹了Go語言服務(wù)器開發(fā)實現(xiàn)最簡單HTTP的GET與POST接口,實例分析了Go語言http包的使用技巧,需要的朋友可以參考下
本文實例講述了Go語言服務(wù)器開發(fā)實現(xiàn)最簡單HTTP的GET與POST接口。分享給大家供大家參考。具體分析如下:
Go語言提供了http包,可以很輕松的開發(fā)http接口。以下為示例代碼:
復(fù)制代碼 代碼如下:
package webserver
import (
"encoding/json"
"fmt"
"net/http"
"time"
)
func WebServerBase() {
fmt.Println("This is webserver base!")
//第一個參數(shù)為客戶端發(fā)起http請求時的接口名,第二個參數(shù)是一個func,負(fù)責(zé)處理這個請求。
http.HandleFunc("/login", loginTask)
//服務(wù)器要監(jiān)聽的主機(jī)地址和端口號
err := http.ListenAndServe("192.168.1.27:8081", nil)
if err != nil {
fmt.Println("ListenAndServe error: ", err.Error())
}
}
func loginTask(w http.ResponseWriter, req *http.Request) {
fmt.Println("loginTask is running...")
//模擬延時
time.Sleep(time.Second * 2)
//獲取客戶端通過GET/POST方式傳遞的參數(shù)
req.ParseForm()
param_userName, found1 := req.Form["userName"]
param_password, found2 := req.Form["password"]
if !(found1 && found2) {
fmt.Fprint(w, "請勿非法訪問")
return
}
result := NewBaseJsonBean()
userName := param_userName[0]
password := param_password[0]
s := "userName:" + userName + ",password:" + password
fmt.Println(s)
if userName == "zhangsan" && password == "123456" {
result.Code = 100
result.Message = "登錄成功"
} else {
result.Code = 101
result.Message = "用戶名或密碼不正確"
}
//向客戶端返回JSON數(shù)據(jù)
bytes, _ := json.Marshal(result)
fmt.Fprint(w, string(bytes))
}
import (
"encoding/json"
"fmt"
"net/http"
"time"
)
func WebServerBase() {
fmt.Println("This is webserver base!")
//第一個參數(shù)為客戶端發(fā)起http請求時的接口名,第二個參數(shù)是一個func,負(fù)責(zé)處理這個請求。
http.HandleFunc("/login", loginTask)
//服務(wù)器要監(jiān)聽的主機(jī)地址和端口號
err := http.ListenAndServe("192.168.1.27:8081", nil)
if err != nil {
fmt.Println("ListenAndServe error: ", err.Error())
}
}
func loginTask(w http.ResponseWriter, req *http.Request) {
fmt.Println("loginTask is running...")
//模擬延時
time.Sleep(time.Second * 2)
//獲取客戶端通過GET/POST方式傳遞的參數(shù)
req.ParseForm()
param_userName, found1 := req.Form["userName"]
param_password, found2 := req.Form["password"]
if !(found1 && found2) {
fmt.Fprint(w, "請勿非法訪問")
return
}
result := NewBaseJsonBean()
userName := param_userName[0]
password := param_password[0]
s := "userName:" + userName + ",password:" + password
fmt.Println(s)
if userName == "zhangsan" && password == "123456" {
result.Code = 100
result.Message = "登錄成功"
} else {
result.Code = 101
result.Message = "用戶名或密碼不正確"
}
//向客戶端返回JSON數(shù)據(jù)
bytes, _ := json.Marshal(result)
fmt.Fprint(w, string(bytes))
}
NewBaseJsonBean用于創(chuàng)建一個struct對象:
復(fù)制代碼 代碼如下:
package webserver
type BaseJsonBean struct {
Code int `json:"code"`
Data interface{} `json:"data"`
Message string `json:"message"`
}
func NewBaseJsonBean() *BaseJsonBean {
return &BaseJsonBean{}
}
type BaseJsonBean struct {
Code int `json:"code"`
Data interface{} `json:"data"`
Message string `json:"message"`
}
func NewBaseJsonBean() *BaseJsonBean {
return &BaseJsonBean{}
}
希望本文所述對大家的Go語言程序設(shè)計有所幫助。
相關(guān)文章
go使用SQLX操作MySQL數(shù)據(jù)庫的教程詳解
sqlx 是 Go 語言中一個流行的操作數(shù)據(jù)庫的第三方包,它提供了對 Go 標(biāo)準(zhǔn)庫 database/sql 的擴(kuò)展,簡化了操作數(shù)據(jù)庫的步驟,下面我們就來學(xué)習(xí)一下go如何使用SQLX實現(xiàn)MySQL數(shù)據(jù)庫的一些基本操作吧2023-11-11
golang使用泛型結(jié)構(gòu)體實現(xiàn)封裝切片
這篇文章主要為大家詳細(xì)介紹了golang使用泛型結(jié)構(gòu)體實現(xiàn)封裝切片,即封裝切片的增、刪、改、查、長度大小、ForEach(遍歷切片),感興趣的小伙伴可以學(xué)習(xí)一下2023-10-10
Golang使用CopyIn進(jìn)行批量創(chuàng)建的示例代碼
本文主要介紹了Golang使用CopyIn進(jìn)行批量創(chuàng)建的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
prometheus?client_go為應(yīng)用程序自定義監(jiān)控指標(biāo)
這篇文章主要為大家介紹了prometheus?client_go為應(yīng)用程序自定義監(jiān)控指標(biāo)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02

