mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 20:52:22 +00:00
commit
78b3f19032
@ -11,7 +11,7 @@ GET /card/:id/name
|
|||||||
GET /card/:id/relations
|
GET /card/:id/relations
|
||||||
```
|
```
|
||||||
|
|
||||||
可见是否该用框架还是要具体问题具体分析的。
|
可见是否使用框架还是要具体问题具体分析的。
|
||||||
|
|
||||||
Go的Web框架大致可以分为这么两类:
|
Go的Web框架大致可以分为这么两类:
|
||||||
|
|
||||||
@ -148,9 +148,9 @@ func handleKafka(app *ApplicationContext, w http.ResponseWriter, r *http.Request
|
|||||||
|
|
||||||
因为默认的net/http包中的 mux 不支持带参数的路由,所以Burrow 这个项目使用了非常蹩脚的字符串 Split 和乱七八糟的 switch case 来达到自己的目的,但实际上却让本来应该很集中的路由管理逻辑变得复杂,散落在系统的各处,难以维护和管理。如果读者细心地看过这些代码之后,可能会发现其它的几个 handler 函数逻辑上较简单,最复杂的也就是这个 handleKafka。但实际上我们的系统总是从这样微不足道的混乱开始积少成多,最终变得难以收拾。
|
因为默认的net/http包中的 mux 不支持带参数的路由,所以Burrow 这个项目使用了非常蹩脚的字符串 Split 和乱七八糟的 switch case 来达到自己的目的,但实际上却让本来应该很集中的路由管理逻辑变得复杂,散落在系统的各处,难以维护和管理。如果读者细心地看过这些代码之后,可能会发现其它的几个 handler 函数逻辑上较简单,最复杂的也就是这个 handleKafka。但实际上我们的系统总是从这样微不足道的混乱开始积少成多,最终变得难以收拾。
|
||||||
|
|
||||||
根据我们的经验,简单地来说,只要你的路由带有参数,并且这个项目的 api 数目超过了 10,就尽量不要使用 net/http 中默认的路由。在Go开源界应用最广泛的 router 是 httpRouter,很多开源的 router 框架都是基于 httpRouter 进行一定程度的改造的结果。关于 httpRouter 路由的原理,会在本章节的 router 一节中进行详细的阐释。
|
根据我们的经验,简单地来说,只要你的路由带有参数,并且这个项目的 api 数目超过了 10,就尽量不要使用 net/http 中默认的路由。在Go开源界应用最广泛的 router 是 httpRouter,很多开源的 router 框架都是基于 httpRouter 进行一定程度的改造的成果。关于 httpRouter 路由的原理,会在本章节的 router 一节中进行详细的阐释。
|
||||||
|
|
||||||
再来回顾一下文章开头说的,开源界有这么几种框架,第一种是对 httpRouter 进行简单的封装,然后提供定制的 middleware 和一些简单的小工具集成比如 gin,主打轻量,易学,高性能。第二种是借鉴其它语言的编程风格的一些 MVC 类框架,例如 beego,方便从其它语言迁移过来的程序员快速上手,快速开发。还有一些框架功能更为强大,除了 db 设计,大部分代码直接生成,例如 goa。不管哪种框架,适合读者背景的就是最好的。
|
再来回顾一下文章开头说的,开源界有这么几种框架,第一种是对 httpRouter 进行简单的封装,然后提供定制的 middleware 和一些简单的小工具集成比如 gin,主打轻量,易学,高性能。第二种是借鉴其它语言的编程风格的一些 MVC 类框架,例如 beego,方便从其它语言迁移过来的程序员快速上手,快速开发。还有一些框架功能更为强大,除了 db 设计,大部分代码直接生成,例如 goa。不管哪种框架,适合开发者背景的就是最好的。
|
||||||
|
|
||||||
本章的内容除了会展开讲解 router 和 middleware 的原理外,还会以现在工程界面临的问题结合 Go 来进行一些实践性的说明。希望能够对没有接触过相关内容的读者有所帮助。
|
本章的内容除了会展开讲解 router 和 middleware 的原理外,还会以现在工程界面临的问题结合 Go 来进行一些实践性的说明。希望能够对没有接触过相关内容的读者有所帮助。
|
||||||
|
|
||||||
|
@ -2,5 +2,5 @@
|
|||||||
|
|
||||||
本章将会阐述 go 在 web 开发方面的现状,并以几个典型的开源 web 框架为例,带大家深入 web 框架本身的执行流程。
|
本章将会阐述 go 在 web 开发方面的现状,并以几个典型的开源 web 框架为例,带大家深入 web 框架本身的执行流程。
|
||||||
|
|
||||||
同时会介绍现代企业级 web 开发面临的一些问题,以及在 golang 中如何面对,并解决这些问题。
|
同时会介绍现代企业级 web 开发面临的一些问题,以及在 go 中如何面对,并解决这些问题。
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user