代码克隆自 github.com/Moonlight-Z…
get 请求测试
http://localhost:8080/community/page/get/1
post 请求测试
curl localhost:8080/community/page/post -X POST -d 'name=aaa'
package main
import (
"encoding/json"
"fmt"
"io"
"log"
"os"
"time"
"github.com/Moonlight-Zhao/go-project-example/repository"
"github.com/Moonlight-Zhao/go-project-example/cotroller"
"gopkg.in/gin-gonic/gin.v1"
)
func main() {
if err := Init("./data/"); err != nil {
os.Exit(-1)
}
// //Default返回一个默认的路由引擎
r := gin.Default()
r.GET("/community/page/get/:id", func(c *gin.Context) {
topicId := c.Param("id")
data := cotroller.QueryPageInfo(topicId)
// //输出json结果给调用方
c.JSON(200, data)
})
r.POST("/community/page/post", func(c *gin.Context) {
message := c.PostForm("message")
test := c.DefaultPostForm("name", "sss")
c.JSON(200, gin.H{
"status": "posted",
"message": message,
"test": test,
})
})
r.POST("/form_post", func(c *gin.Context) {
message := c.PostForm("message")
nick := c.DefaultPostForm("nick", "anonymous") // 此方法可以设置默认值
//实例化一个数据结构,用于生成json字符串
stu := repository.Post{
Id: 13,
ParentId: 3,
Content: "小哥哥我来了",
CreateTime: 1650437627,
}
//Marshal失败时err!=nil
jsonStu, err := json.Marshal(stu)
if err != nil {
fmt.Println(time.Now().Format("2006-01-02_15:04:05"), "生成json字符串错误")
} else {
fmt.Println(time.Now().Format("2006-01-02_15:04:05"), "生成数据json字符串成功")
}
//jsonStu是[]byte类型,转化成string类型便于查看
//fmt.Println(string(jsonStu))
ServerInfoData := string(jsonStu)
fmt.Println(ServerInfoData)
////////////////////////////////生成json字符串数据////////////////////////////////
//writeFile(ServerInfoData)
appendToFile("./data/output", ServerInfoData)
c.JSON(200, gin.H{
"status": "posted",
"message": message,
"nick": nick,
})
})
err := r.Run() // // listen and serve on 0.0.0.0:8080
if err != nil {
return
}
}
func Init(filePath string) error {
if err := repository.Init(filePath); err != nil {
return err
}
return nil
}
func openFile(filename string) (*os.File, error) {
if _, err := os.Stat(filename); os.IsNotExist(err) {
fmt.Println("file not exist")
return os.Create(filename)
}
fmt.Println("file exist")
return os.OpenFile(filename, os.O_RDWR, 0666)
}
func writeFile(fileStr string) {
f1, err1 := openFile("./data/output")
if err1 != nil {
log.Fatal(err1.Error())
}
defer f1.Close()
n, err1 := io.WriteString(f1, fileStr)
if err1 != nil {
log.Fatal(err1.Error())
}
fmt.Printf("write %d byte \n", n)
}
func appendToFile(filename string, content string) {
f, err := openFile("./data/output")
if err != nil {
fmt.Println("file open fail err:" + err.Error())
} else {
// 查找文件末尾的偏移
n, _ := f.Seek(0, os.SEEK_END)
// 从末尾的偏移开始写入
_, err = f.WriteAt([]byte(content), n)
if err != nil {
log.Fatal(err.Error())
}
}
defer f.Close()
}