Added README.md
parent
e307ce7669
commit
45e64c198b
69
README.md
69
README.md
|
@ -1,2 +1,69 @@
|
||||||
# apigen
|
# API Gen
|
||||||
API Generator
|
API Generator
|
||||||
|
|
||||||
|
API Generator works on top of Go code and comments. Instead of generating openapi and from there deriving your code,
|
||||||
|
you can code 1st, and reduce the amount of effort at refactoring / improving your code in case of changes or improvements.
|
||||||
|
|
||||||
|
How it works:
|
||||||
|
|
||||||
|
Create a GO package with the business logic to be exposed:
|
||||||
|
|
||||||
|
```go
|
||||||
|
/*
|
||||||
|
@API
|
||||||
|
@PATH: /someapi
|
||||||
|
@PERM: ASD
|
||||||
|
@VERB: POST
|
||||||
|
*/
|
||||||
|
func SomeAPI(ctx context.Context, s string) (out string, err error) {
|
||||||
|
print("Got:" + s)
|
||||||
|
out = time.Now().String() + " - Hey Ya!"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Note the follwoing on the above API:
|
||||||
|
|
||||||
|
1 - Method has a context as 1st parameter
|
||||||
|
2 - Method has a string as 2nd parameter
|
||||||
|
3 - Method returns a string and an error
|
||||||
|
|
||||||
|
1st Rule of API Methods:
|
||||||
|
|
||||||
|
1 - Always recive context and an interface as parameters in
|
||||||
|
2 - Always return interface and error
|
||||||
|
|
||||||
|
Also note the comments just above the Method, this is used as meta programming,
|
||||||
|
binding the method do the API impl.
|
||||||
|
|
||||||
|
|
||||||
|
```go
|
||||||
|
|
||||||
|
/*@API*/
|
||||||
|
type AStr struct {
|
||||||
|
Country string
|
||||||
|
City string
|
||||||
|
HouseNumber int64
|
||||||
|
IsCondo bool
|
||||||
|
SomeWeirdTest string `json:"SUPERCALIFRAGILISPEALIDOUX"`
|
||||||
|
Recursive map[string]AStr
|
||||||
|
Arrofpstr []string `json:"arrofpstr,omitempty"`
|
||||||
|
When time.Time
|
||||||
|
Some crypto.Decrypter
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
For datastructures you may need to use as params in or out - you may use similar approach:
|
||||||
|
|
||||||
|
Mark them with the comment `@API` and they will be also exported.
|
||||||
|
|
||||||
|
Once your code is ready, call apigen fromt the command line with the following alternatives:
|
||||||
|
|
||||||
|
1 - goserver: Provides API Server using standard lib router
|
||||||
|
2 - gin: Provives API Server using Gin
|
||||||
|
3 - gocli: Creates Go Client for the API
|
||||||
|
4 - ts: Creates typescript client for the API
|
||||||
|
5 - pycli: Creates python client for the API
|
||||||
|
|
||||||
|
See apigen -h for further details
|
Loading…
Reference in New Issue