Skip to content

Commit

Permalink
更新1008
Browse files Browse the repository at this point in the history
  • Loading branch information
ffhelicopter committed Oct 8, 2019
1 parent a1c4711 commit 469596f
Show file tree
Hide file tree
Showing 10 changed files with 1,491 additions and 1 deletion.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ function,method,interface,type等词语是程序员们接触比较多的



最新更新框架rpcx包含了服务发现负载均衡故障转移等服务治理能力特整理了一些资料来说说这款框架推荐中小团队使用
## [>>> rpcx 框架](https://github.com/ffhelicopter/Go42/blob/master/content/42_43_rpcx.md)


#### [>>>开始阅读 第一章 Go安装与运行](https://github.com/ffhelicopter/Go42/blob/master/content/42_01_install.md)


Expand Down
14 changes: 13 additions & 1 deletion content/42_42_gin.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
Gin是Go语言写的一个WEB框架它具有运行速度快分组的路由器良好的崩溃捕获和错误处理非常好的支持中间件和JSON总之在Go语言开发领域是一款值得好好研究的WEB框架开源网址:https://github.com/gin-gonic/gin

首先下载安装gin包

```Go
go get -u github.com/gin-gonic/gin
```
Expand All @@ -29,11 +30,14 @@ func main() {
r.Run() // listen and serve on 0.0.0.0:8080
}
```

编译运行程序,打开浏览器访问 http://localhost:8080/ping
页面显示

```Go
{"message":"pong"}
```
以JSON格式输出了数据。
gin的功能不只是简单输出JSON数据。它是一个轻量级的WEB框架,支持RESTful风格API,支持GET,POST,PUT,PATCH,DELETE,OPTIONS 等http方法,支持文件上传,分组路由,Multipart/Urlencoded FORM,以及支持JSONP,参数处理等等功能,这些都和WEB紧密相关,通过提供这些功能,使开发人员更方便地处理WEB业务。
Expand Down Expand Up @@ -163,7 +167,7 @@ func main() {
```Go
v := router.Group("/login")
```
我们可以访问:http://localhost/login/xxxx,xxx是我们在v.GET方法或v.POST方法中的路径。
我们可以访问:http://localhost/login/xxxx ,xxx是我们在v.GET方法或v.POST方法中的路径。
```Go
// 导入所有模板,多级目录结构需要这样写
Expand All @@ -180,9 +184,11 @@ v := router.Group("/login")
```
通过router.LoadHTMLGlob("website/tpl/*/*") 导入模板根目录下所有的文件。在前面有讲过html/template 包的使用,这里模板文件中的语法和前面一致。
```Go
router.LoadHTMLGlob("website/tpl/*/*")
```
比如v.GET("/index.html", handler.IndexHandler) ,通过访问http://localhost/index.html 这个URL,实际由handler.IndexHandler来处理。而在tmm目录下的handler存放了package handler 文件。在包里定义了IndexHandler函数,它使用了index.html模板。
```Go
Expand Down Expand Up @@ -246,6 +252,7 @@ index.html模板:
在index.html模板中通过{{template "header" .}}语句,嵌套了header.html模板

header.html模板

```Go
{{ define "header" }}
<meta charset="UTF-8">
Expand Down Expand Up @@ -296,16 +303,21 @@ Go 语言中net/http设计的一大特点就是特别容易构建中间件。 gi
lmt := tollbooth.NewLimiter(1, nil)
lmt.SetMessage("服务繁忙,请稍后再试...")
```

并修改

```Go
v.GET("/index.html", LimitHandler(lmt), handler.IndexHandler)
```
当F5刷新刷新http://localhost/index.html 页面时,浏览器会显示:服务繁忙,请稍后再试...
限流策略也可以为IP:
```Go
tollbooth.LimitByKeys(lmt, []string{"127.0.0.1", "/"})
```
更多限流策略的配置,可以进一步github.com/didip/tollbooth/limiter 了解。
**四:RESTful API接口**
Expand Down
Loading

0 comments on commit 469596f

Please sign in to comment.