終於要來寫一些Code了好興奮阿!
其實這個Code改了許多次,可能歸類為幾個原因
在實作時我們調整了目錄結構
露天廢物創立了一所學校,目前學校只有一班,因為名聲很好,所以一班裡面目前有17個學生,未來希望招生更多的學生...
因為學生越來越多,不能在用紙本資料來做管理了,黑絲工程師想了個辦法,就寫一個API,方便給其他工程師使用,使用了beego Framework,他研究很久的一段時間,寫了些程式碼,他的目錄結構是下面這個樣子
目錄結構
ironSchool
├── conf
│ └── app.conf
├── controllers
│ └── student.go
├── main.go
├── models
│ └── student.go
├── routers
│ └── router.go
└── tests
└── default_test.go
花了很久的時間查了查看了看,他的router方法真的很多種,我選了一種最簡單的方法來寫
routers/router.go
package routers
import (
"Board/controllers"
"github.com/astaxie/beego"
)
func init() {
beego.Router("/", &controllers.StudentController{},"*:GetAll")
beego.Router("/:studentId", &controllers.StudentController{},"*:Get")
}
在執行router.go的時候,會去抓init()
這個func來處理,這次我們將設定
controllers/student.go
package controllers
import (
"ironSchool/models"
"github.com/astaxie/beego"
)
type StudentController struct {
beego.Controller
}
func (s *StudentController) Get() {
StudentId := s.Ctx.Input.Param(":studentId")
if StudentId != "" {
st, err := models.GetStudent(StudentId)
if err != nil {
s.Data["json"] = err.Error()
} else {
s.Data["json"] = st
}
}
s.ServeJSON()
}
func (s *StudentController) GetAll() {
sts := models.GetAllStudents()
s.Data["json"] = sts
s.ServeJSON()
}
在Controller定義兩個方法一個是Get()用來取得單個學生資料,GetAll()來取得所有學生的資料
我們會在程式碼看到s.Data["json"]
主要是將資料轉成json格式
models/student.go
package models
import (
"errors"
)
var (
StudentList map[string]*Student
SerialNo int64
)
type Student struct {
StudentId string
StudentName string
ClassName string
}
func init() {
StudentList = make(map[string]*Student)
StudentList["s201700001"] = &Student{"s201700001", "Sharon", "apple"}
StudentList["s201700002"] = &Student{"s201700002", "Summer", "apple"}
// ...
// 因篇幅太大故省略
SerialNo = 201700018
}
func GetStudent(studentId string) (student *Student, err error) {
if v, ok := StudentList[studentId]; ok {
return v, nil
}
return nil, errors.New("studentId Not Exist")
}
func GetAllStudents() map[string]*Student {
return StudentList
}
我們再來看一下在model的部分,這邊要注意的部分在開發中比較常遇到,盡量不要將方法的名稱取相同的名字,因為很容易出錯摟,
每天會將code push到Github上,歡迎有興趣的人可以去看看喔!
最後我們在cmder下
$ bee run ironSchool
在瀏覽器打上 localhost:8080