- func main() {http.HandleFunc("/api", apiHandler)
- http.HandleFunc("/query/main", mainHandler)
- http.HandleFunc("/query/show", showHandler)
- http.HandleFunc("/", mainHandler)
- http.ListenAndServe(":8081", nil)
- }
API 和网页 按不同的 url 处理
用 go-curl 调用底层 service
- func callCurl(postData string) (result string, err error) {
- easy := curl.EasyInit()
- defer easy.Cleanup()
- easy.Setopt(curl.OPT_URL, "http://localhost:8540")
- easy.Setopt(curl.OPT_POST, true)
- easy.Setopt(curl.OPT_VERBOSE, true)
- easy.Setopt(curl.OPT_HTTPHEADER, []string{"Content-Type: application/json"})
- easy.Setopt(curl.OPT_POSTFIELDSIZE, len(postData))
- easy.Setopt(curl.OPT_READFUNCTION, func(ptr []byte, _ interface{}) int {
- return copy(ptr, postData)
- })
- easy.Setopt(curl.OPT_WRITEFUNCTION, func(buf []byte, _ interface{}) bool {
- result = string(buf)
- return true
- })
- if err := easy.Perform(); err != nil {
- return "", err
- }
- return result, nil
- }
json.Marshal/Unmarshal 把 json 字符串转 go struct
https://gobyexample.com/json
http.Template 来写 web 页面
https://golang.google.cn/doc/articles/wiki/
格式化一下 json 到网页:
- https://github.com/tidwall/pretty
- opt := &pretty.Options{Width: 80, Prefix: "<br>", Indent: " ", SortKeys: false}
- result = string(pretty.PrettyOptions([]byte(result), opt)
防止 html escape
http://blog.xiayf.cn/2013/11/01/unescape-html-in-golang-html_template/
用 template.HTML 类 封装
用 nginx 做 load balance:
- First configure / etc / nginx / nginx.conf: worker_processes 5;
- worker_rlimit_nofile 8192;
- events {
- worker_connections 4096;
- }
- http {
- upstream myapp1 {
- server server1: 8081;
- server server2: 8081;
- }
- server {
- listen 8080;
- location / {
- proxy_pass http: //myapp1;
- }
- }
- }
- Start nginx via`nginx`Try it in browser via nginx URL: `http: //nginx-server:8080`
来源: http://www.bubuko.com/infodetail-2491003.html