Go-Json-Rest 示例项目教程
1. 项目的目录结构及介绍
Go-Json-Rest 示例项目的目录结构如下:
go-json-rest-examples/
├── api-and-static/
├── api-versioning/
├── auth-basic/
├── cors/
├── countries/
├── force-ssl/
├── gae/
├── gorm/
├── graceful/
├── helloworld/
├── jsonp/
├── jwt/
├── lookup/
├── newrelic/
├── non-json-payload/
├── spdy/
├── statsd/
├── status-auth/
├── status/
├── streaming/
├── users/
├── websocket/
├── LICENSE
└── README.md
目录介绍
api-and-static/
: 展示如何结合 API 和静态文件服务。api-versioning/
: 展示如何进行 API 版本控制。auth-basic/
: 展示基本的 HTTP 认证。cors/
: 展示如何处理跨域资源共享(CORS)。countries/
: 展示如何处理国家数据。force-ssl/
: 展示如何强制使用 SSL。gae/
: 展示如何在 Google App Engine 上运行。gorm/
: 展示如何与 GORM 集成。graceful/
: 展示如何优雅地关闭服务器。helloworld/
: 展示基本的 "Hello World" 示例。jsonp/
: 展示如何处理 JSONP 请求。jwt/
: 展示如何使用 JWT 进行认证。lookup/
: 展示如何进行数据查找。newrelic/
: 展示如何与 New Relic 集成。non-json-payload/
: 展示如何处理非 JSON 负载。spdy/
: 展示如何使用 SPDY 协议。statsd/
: 展示如何与 StatsD 集成。status-auth/
: 展示如何进行状态认证。status/
: 展示如何返回状态信息。streaming/
: 展示如何进行流式传输。users/
: 展示如何处理用户数据。websocket/
: 展示如何使用 WebSocket。LICENSE
: 项目许可证。README.md
: 项目说明文档。
2. 项目的启动文件介绍
每个示例目录中都有一个 main.go
文件,这是项目的启动文件。以下是 helloworld
示例的启动文件内容:
package main
import (
"log"
"net/http"
"github.com/ant0ine/go-json-rest/rest"
)
func main() {
api := rest.NewApi()
api.Use(rest.DefaultDevStack...)
router, err := rest.MakeRouter(
rest.Get("/message", func(w rest.ResponseWriter, req *rest.Request) {
w.WriteJson(map[string]string{"Body": "Hello World!"})
}),
)
if err != nil {
log.Fatal(err)
}
api.SetApp(router)
log.Fatal(http.ListenAndServe(":8080", api.MakeHandler()))
}
启动文件介绍
rest.NewApi()
: 创建一个新的 API 实例。api.Use(rest.DefaultDevStack...)
: 使用默认的开发堆栈。rest.MakeRouter(...)
: 创建路由器并定义路由规则。api.SetApp(router)
: 设置 API 应用。http.ListenAndServe(":8080", api.MakeHandler())
: 启动 HTTP 服务器并监听端口 8080。
3. 项目的配置文件介绍
Go-Json-Rest 示例项目通常不包含独立的配置文件,而是通过代码直接配置。例如,helloworld
示例中的配置是通过代码实现的:
api := rest.NewApi()
api.Use(rest.DefaultDevStack...)
router, err := rest.MakeRouter(
rest.Get("/message", func(w rest.ResponseWriter, req *rest.Request) {
w.WriteJson(map[string]string{"