This repo contains the templates used by the webrpc-gen
cli to code-generate
webrpc Go server and client code.
webrpc-gen -schema=example.ridl -target=golang -out=./example.gen.go -pkg=main -server -client
# or
webrpc-gen -schema=example.ridl -target=github.com/webrpc/gen-golang@v0.6.0 -out=./example.gen.go -pkg=main -server -client
# or
webrpc-gen -schema=example.ridl -target=./local-go-templates-on-disk -out=./example.gen.go -pkg=main -server -client
As you can see, the -target
supports default golang
, any git URI, or a local folder :)
Change any of the following values by passing -option="Value"
CLI flag to webrpc-gen
.
webrpc-gen -option | Default | Description | Added in |
---|---|---|---|
-pkg=<name> |
"proto" |
package name | v0.5.0 |
-client |
false |
generate client code | v0.5.0 |
-server |
false |
generate server code | v0.5.0 |
-types=false |
true |
don't generate types | v0.13.0 |
-json=jsoniter |
"stdlib" |
use alternative json encoding package | v0.12.0 |
-fixEmptyArrays |
false |
force empty array [] instead of null in JSON (see Go #27589) |
v0.13.0 |
-errorStackTrace |
false |
enables error stack traces | v0.14.0 |
-legacyErrors |
false |
enable legacy errors (v0.10.0 or older) | v0.11.0 |
-webrpcHeader |
true |
enable client send webrpc version in http headers | v0.16.0 |
Example:
webrpc-gen -schema=./proto.json -target=golang -out server.gen.go -pkg=main -server
CLI option flag | Description |
---|---|
+ go.field.name = ID |
Set custom field name |
+ go.field.type = uuid.UUID |
Set custom field type (must be able to JSON unmarshal the value) |
+ go.type.import = github.com/google/uuid |
Set custom field type's import path |
+ go.tag.json = id |
Set json:"id" struct tag |
+ go.tag.db = id |
Set db:"id" struct tag |
Example:
struct User
- ID: int64
+ go.tag.db = id
+ go.tag.json = id
- UUID: string
+ go.field.type = uuid.UUID
+ go.type.import = github.com/google/uuid
+ go.tag.json = uuid
+ go.tag.db = uuid
- Age: int
+ go.tag.db: age
- Name: string
+ go.tag.db = name
- PasswordHash: string
+ go.tag.db = passwd_hash
will result in
import "github.com/google/uuid"
type User struct {
ID int64 `json:"id" db:"id"`
UUID uuid.UUID `json:"uuid" db:"uuid"`
Name string `db:"name"`
Age int `db:"age"`
PasswordHash string `json:"-" db:"passwd_hash"`
}
See _examples