Golang笔记

Goji + mgo 示例

Goji + mgo 示例

package main

import (
    "encoding/json"
    "flag"
    "log"
    "net/http"

    "github.com/zenazn/goji"
    "github.com/zenazn/goji/web"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

type ErrorRes struct {
    Status  int    `json:"status-code"`
    Message string `json:"message"`
}

type Log struct {
    ID          bson.ObjectId `bson:"_id"`
    Account     string        `bson:"account"`
    IsSucceeded bool          `bson:"isSucceeded"`
    Site        string        `bson:"site"`
    Date        string        `bson:"date"`
    Message     []string      `bson:"message"`
}

func findAll() (r []Log) {
    session, err := mgo.Dial("mongodb://localhost")
    if err != nil {
        panic(err)
    }
    defer session.Close()

    session.SetMode(mgo.Monotonic, true)
    con := session.DB("db-name").C("log")

    err = con.Find(bson.M{}).All(&r)
    if err != nil {
        log.Fatal(err)
    }
    return r
}

func getLog(c web.C, w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    encoder := json.NewEncoder(w)

    if c.URLParams["APPID"] != "[Your APP ID]" {
        encoder.Encode(&ErrorRes{401, "Incorrect App ID"})
        return
    }

    result := findAll()
    encoder.Encode(result)
}

func main() {
    flag.Set("bind", ":8888")
    goji.Get("/log/:APPID", getLog)
    goji.Get("/logs/:APPID", http.RedirectHandler("/log/:APPID", 301))
    goji.Serve()
}
本文网址: https://golangnote.com/topic/114.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles