Autogenerate Multi Network Handlers for GoLang written Services Logic Methods in specific template like example. It will also make SDK in multi language for client usage.
All information get from IANA Resourses:
How to make & build a project?
- Make service by:
./ChaparKhane --loc:github.com/.../... --methods:3
You can add methods manually by copy method files or run make service again to add new method.
- Complete manifest.json details in root service folder.
- Change methods details as business need's.
- Build to autogenerate all needed code by:
./ChaparKhane --loc:github.com/.../... --build
Done in autogenerate layers
- Serialize and deserialize data format like json, xml, ... would be faster up to 5x because of not use of reflection
e.g. https://github.com/mailru/easyjson , https://github.com/pquerna/ffjson
- Check & validate request data
- Make handlers to recieve data and call logic methods.
- Make API documentation in many standards e.g. OpenAPI(Swagger), ...
- Make SDK in multi language & system e.g. Go, JS, ...
We use git tag to determine last version of every microservice. Each microservice must have a tag on each version. e.g.
If any active filters return any kind of error in return of functions, The request will be responded with that error. They also can remove or add data to request structure. e.g. add or remove http header.
- If commit set as the version tag, All logic methods must be bug free, Otherwise Building will be failed with error!
- If commit not set as the version tag, Each methods has error will be eliminate from building process with error!
Everything only can run in security protocol like TLS. we force redirect http to https requests.
To achieve better bandwidth we force to compress request and awnser. e.g. gzip
Management and analitics
We just cache HTTP GET method. we must work to cache other get method.
What is prohibited?
- Autogenerated code should not be edited, since it may be automatically overwritten by the same process.
- Don't use minor version for service breaking changes! We just use major version number to versioning API.
This package is under development and not ready to use in real production. It can have breakable changes until version 1 release. But we are glad to hear your experience or idea about this package. So please feedback us!