You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
# Gateway
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
- main.go
|
|
|
|
|
|
|
|
```go
|
|
|
|
var configFile = flag.String("f", "config.yaml", "config file")
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
flag.Parse()
|
|
|
|
|
|
|
|
var c gateway.GatewayConf
|
|
|
|
conf.MustLoad(*configFile, &c)
|
|
|
|
gw := gateway.MustNewServer(c)
|
|
|
|
defer gw.Stop()
|
|
|
|
gw.Start()
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
- config.yaml
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
Name: demo-gateway
|
|
|
|
Host: localhost
|
|
|
|
Port: 8888
|
|
|
|
Upstreams:
|
|
|
|
- Grpc:
|
|
|
|
Etcd:
|
|
|
|
Hosts:
|
|
|
|
- localhost:2379
|
|
|
|
Key: hello.rpc
|
|
|
|
# protoset mode
|
|
|
|
ProtoSets:
|
|
|
|
- hello.pb
|
|
|
|
# Mappings can also be written in proto options
|
|
|
|
Mappings:
|
|
|
|
- Method: get
|
|
|
|
Path: /pingHello/:ping
|
|
|
|
RpcPath: hello.Hello/Ping
|
|
|
|
- Grpc:
|
|
|
|
Endpoints:
|
|
|
|
- localhost:8081
|
|
|
|
# reflection mode, no ProtoSet settings
|
|
|
|
Mappings:
|
|
|
|
- Method: post
|
|
|
|
Path: /pingWorld
|
|
|
|
RpcPath: world.World/Ping
|
|
|
|
```
|
|
|
|
|
|
|
|
## Generate ProtoSet files
|
|
|
|
|
|
|
|
- example command without external imports
|
|
|
|
|
|
|
|
```shell
|
|
|
|
protoc --descriptor_set_out=hello.pb hello.proto
|
|
|
|
```
|
|
|
|
|
|
|
|
- example command with external imports
|
|
|
|
|
|
|
|
```shell
|
|
|
|
protoc --include_imports --proto_path=. --descriptor_set_out=hello.pb hello.proto
|
|
|
|
```
|