版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dhd040805/article/details/80283389
服务器端代码
package main
import (
"net/http"
"github.com/pquerna/ffjson/ffjson"
"github.com/gorilla/mux"
"encoding/json"
"log"
)
type Person struct {
Id string `json:"id,omitemty"`
Firstname string `json:"firstname,omitemty"`
Lastname string `json:"lastname,omitemty"`
Address *Address `json:"address,omitemty"`
}
type Address struct {
City string `json:"city,omitemty"`
Province string `json:"province,omitemty"`
}
var people []Person
//获取所有person
func GetPeople(w http.ResponseWriter, req *http.Request) {
ffjson.NewEncoder(w).Encode(people)
}
//根据id获取person
func GetPerson(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
for _, item := range people {
if item.Id == params["id"] {
json.NewEncoder(w).Encode(item)
return
}
}
json.NewEncoder(w).Encode(people)
}
//通过post向服务器添加数据
func PostPerson(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
var person Person
_ = json.NewDecoder(r.Body).Decode(&people)
person.Id = params["id"]
people = append(people, person)
json.NewEncoder(w).Encode(people)
}
//根据id删除用户
func DeletePerson(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
for index, item := range people {
if item.Id == params["id"] {
people = append(people[:index], people[index+1:] ...)
break
}
}
json.NewEncoder(w).Encode(people)
}
func main() {
people = append(people, Person{Id: "1", Firstname: "xi", Lastname: "paopao", Address: &Address{City: "wuhan", Province: "hubei"}})
people = append(people, Person{Id: "2", Firstname: "yiran", Lastname: "zhuangzhi", Address: &Address{City: "wuhan", Province: "hubei"}})
router := mux.NewRouter()
router.HandleFunc("/people", GetPeople).Methods("GET")
router.HandleFunc("/people/{id}", GetPerson).Methods("GET")
router.HandleFunc("/people/{id}", PostPerson).Methods("POST")
router.HandleFunc("/people/{id}", PostPerson).Methods("DELETE")
log.Fatal(http.ListenAndServe(":12345", router))
}
Android端代码
首先gradle添加依赖
compile 'com.lzy.net:okgo:3.0.4'
然后application或者mainactivity里面初始化okgo,由于是简单测试所以不加其他的
OkGo.getInstance().init(this)
.setOkHttpClient(new OkHttpClient.Builder().build());
然后是请求代码
OkGo.<String>get("http://XXXX:8080/people")//XXXX你的局域网ipv4地址加端口
.params("id", 1)
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String data = response.body();//这个就是返回来的结果
Log.e("DHD", "onSuccess: " + data);
}
@Override
public void onError(Response<String> response) {
super.onError(response);
Log.e("DHD", "onError: " + response.message());
}
});
请求结果如图
也可以在浏览器测试,也可以在postman测试,postman的如图