golang的框架只是在net/http上加上了 get/post 分类,把http.ResponseWriter, http.Request合并成一个
常用的操作封装到String/HTML/JSON 如果需要用不常用的方法,还是要调用Write/Request / Header() 该写的hundlefunc一行都少不了
如果使用框架中有些细节与预期不符,给作者提issue 你认为是bug,作者认为这是feature 比如
参考 net/http/hello/name/
是不匹配 /hello/name 这样的路由的
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/hello/name", func (w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Welcome to my website!")
})
http.ListenAndServe(":8080", nil)
}
$curl http://localhost:8080/hello/name/
Not found
但是很多框架 要么是算成匹配成功,反回200,有的是301,有的302 提issue 回复这是feature,不服来战,然后就卡壳了
有疑问加站长微信联系(非本文作者)

看不懂楼主在说什么... 例子的代码和测试完全不符合, 一个监听80端口, 一个访问8080...
1楼 @focusonline 8080是另外一个框架的端口,完整的代码
$ http://localhost:8080/hello/world/
你的用法不对, 你这里是把name当path使用了, $curl http://localhost:8080/hello/name/ 但是你定的不是这样的 /hello/:name 尾部增加一个/结果是不一样的?
3楼 @focusonline 定的路由是
/hello/:name
期望
但是很多框架封装了net/http以后就不一样了
哦你是这个意思.我用过的框架不多,用法也比较简单没有把变量和路径混在一起你, 你试过几种? 有没有试过gin?
不知道你又没有注意到过,访问很多网站时,会自动去掉最后的/。</br> 而golang自带的是简单的map实现的路由,无法支持。</br> 框架是用前缀树之类的实现,所以支持了。</br> 不过我是不太喜欢这种自动重定向的功能的, 所以常常会显示设置一个handler</br>
去掉还是加上 google/baidu对 seo 有不同的理解, 但是按常规,扩展以后的行为应该跟内置的类库规则一致 就象开放扩展,关闭修改的原则一样,不然就会出现开发新增一个功能,测试发现原来没问题的地方冒出两个新问题 需要不停地做回归测试,不停地在原地打转 开发效率变成往前走一步,往后退两步