Go語言服務(wù)器開發(fā)實(shí)現(xiàn)最簡(jiǎn)單HTTP的GET與POST接口
本文實(shí)例講述了Go語言服務(wù)器開發(fā)實(shí)現(xiàn)最簡(jiǎn)單HTTP的GET與POST接口。分享給大家供大家參考。具體分析如下:
Go語言提供了http包,可以很輕松的開發(fā)http接口。以下為示例代碼:
import (
"encoding/json"
"fmt"
"net/http"
"time"
)
func WebServerBase() {
fmt.Println("This is webserver base!")
//第一個(gè)參數(shù)為客戶端發(fā)起http請(qǐng)求時(shí)的接口名,第二個(gè)參數(shù)是一個(gè)func,負(fù)責(zé)處理這個(gè)請(qǐng)求。
http.HandleFunc("/login", loginTask)
//服務(wù)器要監(jiān)聽的主機(jī)地址和端口號(hào)
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...")
//模擬延時(shí)
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, "請(qǐng)勿非法訪問")
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)建一個(gè)struct對(duì)象:
type BaseJsonBean struct {
Code int `json:"code"`
Data interface{} `json:"data"`
Message string `json:"message"`
}
func NewBaseJsonBean() *BaseJsonBean {
return &BaseJsonBean{}
}
希望本文所述對(duì)大家的Go語言程序設(shè)計(jì)有所幫助。
相關(guān)文章
利用Golang實(shí)現(xiàn)TCP連接的雙向拷貝詳解
公司中遇到了一個(gè)使用golang編寫的agent程序,所以這篇文章主要給大家介紹了關(guān)于利用Go如何實(shí)現(xiàn)TCP連接的雙向拷貝的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考,下面隨著小編來一起看看吧。2017-09-09
go使用SQLX操作MySQL數(shù)據(jù)庫的教程詳解
sqlx 是 Go 語言中一個(gè)流行的操作數(shù)據(jù)庫的第三方包,它提供了對(duì) Go 標(biāo)準(zhǔn)庫 database/sql 的擴(kuò)展,簡(jiǎn)化了操作數(shù)據(jù)庫的步驟,下面我們就來學(xué)習(xí)一下go如何使用SQLX實(shí)現(xiàn)MySQL數(shù)據(jù)庫的一些基本操作吧2023-11-11
golang使用泛型結(jié)構(gòu)體實(shí)現(xiàn)封裝切片
這篇文章主要為大家詳細(xì)介紹了golang使用泛型結(jié)構(gòu)體實(shí)現(xiàn)封裝切片,即封裝切片的增、刪、改、查、長(zhǎng)度大小、ForEach(遍歷切片),感興趣的小伙伴可以學(xué)習(xí)一下2023-10-10
Golang使用CopyIn進(jìn)行批量創(chuàng)建的示例代碼
本文主要介紹了Golang使用CopyIn進(jìn)行批量創(chuàng)建的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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

