https://github.com/yang-f/beauty
A microframework based on mymysql,net/http,jwt-go and mux.
https://github.com/yang-f/beauty
cors-request error-handler framwork golang logging rest-api restful-api session simple
Last synced: about 1 year ago
JSON representation
A microframework based on mymysql,net/http,jwt-go and mux.
- Host: GitHub
- URL: https://github.com/yang-f/beauty
- Owner: yang-f
- License: mit
- Created: 2017-03-11T11:29:17.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2019-09-25T04:17:12.000Z (over 6 years ago)
- Last Synced: 2025-03-29T19:11:24.553Z (about 1 year ago)
- Topics: cors-request, error-handler, framwork, golang, logging, rest-api, restful-api, session, simple
- Language: Go
- Homepage:
- Size: 124 KB
- Stars: 62
- Watchers: 10
- Forks: 13
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
- [English](README.md)
- [中文](README_ZH.md)
[](https://godoc.org/github.com/yang-f/beauty)
# A simple framwork written in golang.
You can build a simple restful project or a web application with it.
If you dosen't want to use mysql db, you can implement your own Auth decorates and session.You can use your own DAO or whatever you like.
## quick start:
- run cmd
```
mkdir demo && cd demo
go get gopkg.in/alecthomas/kingpin.v2
go get github.com/yang-f/beauty
```
- add $GOPATH/bin to your $PATH
- run cmd beauty
```
usage: beauty [] [ ...]
A command-line tools of beauty.
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
Commands:
help [...]
Show help.
demo
Demo of web server.
generate
Generate a new app.
```
- test beauty
```
beauty demo
```
- then
```golang
2017/05/04 16:21:05 start server on port :8080
```
- visit 127.0.0.1:8080
```golang
{"description":"this is json"}
```
- visit 127.0.0.1:8080/demo1
```golang
{"description":"this is json"}
```
## How to use:
- Generate new app
```
beauty generate yourAppName
```
- dir list
```
GOPATH/src/yourAppName
├── controllers
│ ├── adminController.go
│ └── controller_test.go
├── decorates
| └── http.go
├── main.go
├── models
├── tpl
└── utils
```
- about Route
- demo
```golang
r := router.New()
r.GET("/", controllers.Config().ContentJSON())
r.GET("/demo1", controllers.Config().ContentJSON().Verify())
```
- token generate
```golang
tokenString, err := token.Generate(fmt.Sprintf("%v|%v", user_id, user_pass))
```
- demo
```golang
package main
import (
"net/http"
"log"
"github.com/yang-f/beauty/consts/contenttype"
"github.com/yang-f/beauty/router"
"github.com/yang-f/beauty/settings"
"github.com/yang-f/beauty/controllers"
"github.com/yang-f/beauty/decorates"
)
func main() {
log.Printf("start server on port %s", settings.Listen)
settings.Listen = ":8080"
settings.Domain = "yourdomain.com"
settings.DefaultOrigin = "http://defaultorigin.com"
settings.HmacSampleSecret = "whatever"
r := router.New()
r.GET("/", controllers.Config().ContentJSON())
r.GET("/demo1", controllers.Config().ContentJSON().Verify())
log.Fatal(http.ListenAndServe(settings.Listen, r))
}
```
## Support:
- token
```golang
settings.HmacSampleSecret = "whatever"
token, err := token.Generate(origin)
origin, err := token.Valid(token)
```
- cors
- static file server
```golang
router.PathPrefix("/static/").Handler(http.StripPrefix("/static/", decorates.CorsHeader2(http.FileServer(http.Dir("/your/static/path")))))
```
- api etc:
- default is cors
- error handler
```golang
func XxxxController() decorates.Handler{
return func (w http.ResponseWriter, r *http.Request) *models.APPError {
xxx,err := someOperation()
if err != nil{
return &models.APPError {err, Message, Code, Status}
}
...
return nil
}
}
```
- utils
- Response
- Rand
- MD5
- Post
- test
- go test -v -bench=".\*"
- go test -v -short \$(go list ./... | grep -v /vendor/)
- ...
## Contributing:
1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -m 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D
## TODO:
- [x] Cmd tools
- [ ] Improve document
- [ ] Role review
- [ ] Error handler