本篇内容主要讲解“go mock server如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go mock server如何实现”吧!
代码
整体代码只在50行左右,是一个极其简陋的mock server,没有多余的功能
步骤1
扫描本地以json结尾的文件,获取文件路径
// 获取当前json文件所在的路径已经文件名,然后进行拼接
func ParsePath() (path string, err error) {
pwd, _ := os.Getwd()
fileList, err := ioutil.ReadDir(pwd)
if err != nil {
log.Fatal(err)
}
var curJsonFile string
for _, v := range fileList {
name := v.Name()
if isJson := strings.Contains(name, "json"); isJson {
curJsonFile = name
}
}
if curJsonFile == "" {
return curJsonFile, errors.New("dont have json file")
}
absPath := pwd + "/" + curJsonFile
return absPath, nil
}步骤2
// 根据传入的文件名读取具体的[]byte数据
func ReadJSON(path string) ([]byte, error) {
jsonFile, err := os.Open(path)
if err != nil {
log.Fatal("open file err")
}
defer jsonFile.Close()
byteValue, err := ioutil.ReadAll(jsonFile)
if err != nil {
return nil, err
}
return byteValue, nil
}步骤3
// 根据传入的[]byte数据,将数据转换反序列化为map类型
// 这里由于不知道json文件的具体数据,具体结构,所以用了map[string]interface{}的
// 数据类型
func DecodeJSONString(jsonBytes []byte) (map[string]interface{}, error) {
var m map[string]interface{}
err := json.Unmarshal(jsonBytes, &m)
if err != nil {
log.Fatal("json unmarshal fail", err)
return nil, err
}
return m, nil
}步骤4
var data map[string]interface{}
func returnResponse(w http.ResponseWriter, r *http.Request) {
w.Header().Set("content-type", "application/json")
path := r.URL.Path
if d := data[path]; d != nil {
stringData, err := json.Marshal(data[path])
if err != nil {
log.Fatal(err)
}
w.Write(stringData)
}
}
func main() {
path, err := src.ParsePath()
if err != nil {
log.Fatal(err)
}
bytes, err := src.ReadJSON(path)
if err != nil {
log.Fatal(err)
}
m, err := src.DecodeJSONString(bytes)
data = m
if err != nil {
log.Fatal("decode fail: ", err)
}
for addr, _ := range data {
http.HandleFunc(addr, returnResponse)
}
err = http.ListenAndServe(":3000", nil)
if err != nil {
log.Fatal("listenAndServer fail")
}
}最终效果
本地访问localhost:3000/v1/lottery 前端可以拿到返回的数据

mock的本地json文件
{
"/v1/lottery": [{
"name": "shinji",
"age": 20
}, {
"name": "ayanami",
"age": 20
}]
}到此,相信大家对“go mock server如何实现”有了更深的了解,不妨来实际操作一番吧!这里是天达云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!