Skip to content

Golang API Framework

License

Notifications You must be signed in to change notification settings

dearcode/crab

Repository files navigation

Crab 开发必备库

Logo

codecov

config

加载ini格式的配置文件, 支持以;或者#开头的注释

typetestConfstruct{DBstruct{DomainstringPortint`default:"9088"`Enablebool } aaaint } varconftestConfiferr:=LoadConfig(path, &conf); err!=nil{t.Fatalf(errors.ErrorStack(err)) } t.Logf("conf:%+v", conf)

配置文件

 [db] domain =jd.com enable=true # test comments;port=3306

只要传入对应的ini文件全路径及struct指针就可以了,简单高效.
运行结果:

conf:{DB:{Domain:jd.com Port:9088 Enable:true} aaa:0}

注意:只会解析有访问权限的变量(大写)

handler

简单高效的HTTP路由,支持指定接口函数,支持自动注册接口
指定接口注册示例:

handler.Server.AddHandler(handler.GET, "/test/", false, onTestGet) handler.Server.AddHandler(handler.POST, "/test/", false, onTestPost) handler.Server.AddHandler(handler.DELETE, "/test/", false, onTestDelete)

自动注册接口示例:

//以包名为路径handler.Server.AddInterface(&user{}, "") //指定pathhandler.Server.AddInterface(&user{}, "/api/user/") typeuserstruct{} //DoGet 默认get方法func (u*user) DoGet(w http.ResponseWriter, r*http.Request){w.Write([]byte("Get user")) } //DoPost 默认post方法func (u*user) DoPost(w http.ResponseWriter, r*http.Request){w.Write([]byte("Post user")) }

orm

只支持mysql
查询示例

result:=struct{IDint64UserstringPasswordstring }{} iferr=NewStmt(db, "userinfo").Where("id=2").Query(&result); err!=nil{t.Fatal(err.Error()) }

修改示例

data:=struct{UserstringPasswordstring }{User: fmt.Sprintf("new_user_%d", time.Now().Unix()), Password: fmt.Sprintf("new_password_%d", time.Now().Unix()), } id, err:=NewStmt(db, "userinfo").Where("id=2").Update(&data) iferr!=nil{t.Fatal(err.Error()) }

添加示例

data:=struct{IDint64`db_defult:"auto"`UserstringPasswordstring }{User: fmt.Sprintf("user_%d", time.Now().Unix()), Password: fmt.Sprintf("password_%d", time.Now().Unix()), } id, err:=NewStmt(db, "userinfo").Insert(&data) iferr!=nil{t.Fatal(err.Error()) }

About

Golang API Framework

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •