用戶名和密碼驗證界面
Go語言作為后端語言常用的應用,最簡單的就是做一個后端的用戶名和密碼驗證了,這相當于后端的hello world,所以做一個簡單的json驗證的后端界面吧
要求
這是路徑↓,post是用post方法來發送資料
[POST]/login
用戶發送
{
"username": "admin",
"password": "123456",
"token": "TOKEN"
}
如果TOKEN不對,回傳json
{
"code": 404
}
如果TOKEN對,用戶名和密碼不對,回傳json資訊
{
"code": 400,
"info": "wrong username or password"
}
如果TOKEN對,用戶名和密碼也對,回傳json資訊
{
"code": 200,
"session": "ABCD"
}
[GET]/sum
用戶發送一系列數字如
{
"number": [1, 2, 3, 4]
}
回傳求和的結果
{
"result": 10
}
代碼
package main
import (
"encoding/json"
"io/ioutil"
"net/http"
)
type User struct {
Username string `json:"username"`
Password string `json:"password"`
Token string `json:"token`
}
type Sum struct {
Number []int `json:"number"`
}
type Respond struct {
Code int32 `json:"code,omitempty`
Infomation string `json:"info,omitempty`
Session string `json:"session,omitempty`
Result int32 `json:"result,omitempty`
}
func Compare(data User) Respond {
var result Respond
if data.Token != "TOKEN" {
result.Code = 404
} else if data.Username == "admin" && data.Password == "123456" {
result.Code = 200
result.Session = "ABCD"
} else {
result.Code = 400
result.Infomation = "wrong username or password"
}
return result
}
func Login(writer http.ResponseWriter, request *http.Request) {
defer request.Body.Close()
con, _ := ioutil.ReadAll(request.Body)
var data User
json.Unmarshal(con, &data)
con, _ = json.Marshal(Compare(data))
writer.Write(con)
}
func Get_sum(writer http.ResponseWriter, request *http.Request) {
sum := 0
defer request.Body.Close()
con, _ := ioutil.ReadAll(request.Body)
var data Sum
json.Unmarshal(con, &data)
for i := range data.Number {
sum = sum + data.Number[i]
}
var result Respond
result.Result = int32(sum)
con, _ = json.Marshal(result)
writer.Write(con)
}
func main() {
http.HandleFunc("/Login", Login)
http.HandleFunc("/sum", Get_sum)
http.ListenAndServe("localhost:8080", nil)
}
注意
一定要用request.Body.Close(),因為連接是不會自動關閉的,如果不手動關閉,就非常容易造成記憶體泄漏,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/256851.html
標籤:區塊鏈
上一篇:ubuntu使用wine安裝微信
下一篇:2021-02-04
