简单http

服务端
golanghttpgetx-www-form-urlencodedpostjsonpostrequest.Body
import (
    "net/http"
    "encoding/json"
    "log"
)

func main()  {

    http.HandleFunc("/login1", login1)
    http.HandleFunc("/login2", login2)
    http.ListenAndServe("0.0.0.0:8080", nil)
}

type Resp struct {
    Code    string `json:"code"`
    Msg     string `json:"msg"`
}

type  Auth struct {
    Username string `json:"username"`
    Pwd      string   `json:"password"`
}

//post接口接收json数据
func login1(writer http.ResponseWriter,  request *http.Request)  {
    var auth Auth
    if err := json.NewDecoder(request.Body).Decode(&auth); err != nil {
        request.Body.Close()
        log.Fatal(err)
    }
    var result  Resp
    if auth.Username == "admin" && auth.Pwd == "123456" {
        result.Code = "200"
        result.Msg = "登录成功"
    } else {
        result.Code = "401"
        result.Msg = "账户名或密码错误"
    }
    if err := json.NewEncoder(writer).Encode(result); err != nil {
        log.Fatal(err)
    }
}

//接收x-www-form-urlencoded类型的post请求或者普通get请求
func login2(writer http.ResponseWriter,  request *http.Request)  {
    request.ParseForm()
    username, uError :=  request.Form["username"]
    pwd, pError :=  request.Form["password"]

    var result  Resp
    if !uError || !pError {
        result.Code = "401"
        result.Msg = "登录失败"
    } else if username[0] == "admin" && pwd[0] == "123456" {
        result.Code = "200"
        result.Msg = "登录成功"
    } else {
        result.Code = "203"
        result.Msg = "账户名或密码错误"
    }
    if err := json.NewEncoder(writer).Encode(result); err != nil {
        log.Fatal(err)
    }
}
客户端
http.Get,http.Post,http.PostForm
api作用
http.Get发送get请求
http.Postpost请求提交指定类型的数据
http.PostFormpost请求提交application/x-www-form-urlencoded数据
http://
package main

import (
    "net/http"
    "fmt"
    "io/ioutil"
    "net/url"
    "encoding/json"
    "bytes"
)

type  auth struct {
    Username string `json:"username"`
    Pwd      string   `json:"password"`
}

func main()  {
    get()
    postWithJson()
    postWithUrlencoded()
}

func get()  {
    //get请求
    //http.Get的参数必须是带http://协议头的完整url,不然请求结果为空
    resp, _ := http.Get("http://localhost:8080/login2?username=admin&password=123456")
    defer resp.Body.Close()
    body, _ := ioutil.ReadAll(resp.Body)
    //fmt.Println(string(body))
    fmt.Printf("Get request result: %s\n", string(body))
}

func postWithJson()  {
    //post请求提交json数据
    auths := auth{"admin","123456"}
    ba, _ := json.Marshal(auths)
    resp, _ := http.Post("http://localhost:8080/login1","application/json", bytes.NewBuffer([]byte(ba)))
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Printf("Post request with json result: %s\n", string(body))
}

func postWithUrlencoded()  {
    //post请求提交application/x-www-form-urlencoded数据
    form := make(url.Values)
    form.Set("username","admin")
    form.Add("password","123456")
    resp, _ := http.PostForm("http://localhost:8080/login2", form)
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Printf("Post request with application/x-www-form-urlencoded result: %s\n", string(body))

beego框架

有人评论我就更新

引用