分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
首先,我使用了github.com/ant0ine/go-json-rest/rest 这个包
直接贴代码
```go
func Start(){
NeptuneLog := logs.New()
api := rest.NewApi()
api.Use(rest.DefaultDevStack...)
router, err := rest.MakeRouter(
rest.Get("/:type/:action", handle),
rest.Post("/:type/:action", handle),
)
if err != nil {
NeptuneLog.Fatal(err)
}
api.SetApp(router)
NeptuneLog.Fatal(http.ListenAndServe(":8080", api.MakeHandler()))
}
```
=================start 负责调用 handle ====================
```go
func handle (w rest.ResponseWriter, r *rest.Request) {
NeptuneLog := logs.New()
t := r.PathParam("type")
if (t == "submit") {
action := r.PathParam("action")
submitNode := SubmitNode{R:r,W:w,Action:action}
SubmitChan <- submitNode
NeptuneLog.Printf("%v",w)
//node := test11{Action:action}
//w.WriteJson(node)
} else if t =="browser" {
action := r.PathParam("action")
browserNode := BrowserNode{R:r,W:w,Action:action}
BrowserChan <- browserNode
} else {
//w.WriteJson("not found")
}
}
```
============= handle 负责把request 和 response 放到结构体,然后放到channel ============
```go
func doSubmit () {
NeptuneLog := logs.New()
for item := range SubmitChan{
NeptuneLog.Println("111")
node := test11{Action:item.Action}
NeptuneLog.Printf("%v",node)
NeptuneLog.Printf("%v",item.W)
item.W.WriteJson(node)
NeptuneLog.Printf("%v",item.W)
}
}
```
=========== dosubmit 真正干活,负责从channel拿东西,然后返回 ======
调用之后,server打印出了
http: multiple response.WriteHeader calls
的错误
==========更新下最新进展 ========
我把打印的返回拿出来的
发现有 Conn.Write wrote more than the declared Content-Length 这个错误
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3689 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传