只提供 API
端點(通常是 JSON
)的應用程式與提供 HTML
、 JavaScript
和 CSS
的應用程式非常不同。 在本指南中,您將學習如何使用Buffalo
構建僅 api
的應用程式。
建立一個新的 API 應用程式
當使用 Buffalo new
命令建立一個新的 Buffalo
應用程式時,可選的 -- api
標誌將生成一個更適合於服務 api
的應用程式,而不是一個普通的 Buffalo
應用程式。
$ buffalo new --api coke
細化專案佈局
使用 -- api
標誌生成的應用程式不包含任何前端系統,這意味著沒有模板、樣式表等等。
buffalo new coke --api
├── Dockerfile
├── README.md
├── actions
│ ├── actions_test.go
│ ├── app.go
│ ├── home.go
│ ├── home_test.go
│ └── render.go
├── database.yml
├── fixtures
│ └── sample.toml
├── grifts
│ ├── db.go
│ └── init.go
├── inflections.json
├── main.go
└── models
├── models.go
└── models_test.go
buffalo new coke
├── Dockerfile
├── README.md
├── actions
│ ├── actions_test.go
│ ├── app.go
│ ├── home.go
│ ├── home_test.go
│ └── render.go
├── assets
│ ├── css
│ │ └── application.scss
│ ├── images
│ │ ├── favicon.ico
│ │ └── logo.svg
│ └── js
│ └── application.js
├── database.yml
├── fixtures
│ └── sample.toml
├── grifts
│ ├── db.go
│ └── init.go
├── inflections.json
├── locales
│ └── all.en-us.yaml
├── main.go
├── models
│ ├── models.go
│ └── models_test.go
├── node_modles
├── package.json
├── public
│ ├── assets
│ │ └── .keep
│ └── robots.txt
├── templates
│ ├── _flash.html
│ ├── application.html
│ └── index.html
├── webpack.config.js
└── yarn.lock
應用例項及資料渲染
buffalo new coke --api
func App() *buffalo.App {
if app == nil {
app = buffalo.New(buffalo.Options{
Env: ENV,
SessionStore: sessions.Null{},
PreWares: []buffalo.PreWare{
cors.Default().Handler,
},
SessionName: "_coke_session",
})
app.Use(forceSSL())
app.Use(middleware.SetContentType("application/json"))
if ENV == "development" {
app.Use(middleware.ParameterLogger)
}
app.Use(middleware.PopTransaction(models.DB))
app.GET("/", HomeHandler)
}
return app
}
Copyfunc init() {
r = render.New(render.Options{})
}
buffalo new coke
func App() *buffalo.App {
if app == nil {
app = buffalo.New(buffalo.Options{
Env: ENV,
SessionName: "_coke_session",
})
app.Use(forceSSL())
if ENV == "development" {
app.Use(middleware.ParameterLogger)
}
app.Use(csrf.New)
app.Use(middleware.PopTransaction(models.DB))
app.Use(translations())
app.GET("/", HomeHandler)
app.ServeFiles("/", assetsBox) // serve files from the public directory
}
return app
}
func init() {
r = render.New(render.Options{
HTMLLayout: "application.html",
TemplatesBox: packr.NewBox("../templates"),
AssetsBox: assetsBox,
Helpers: render.Helpers{},
})
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結