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()