Gateway
Swipe можно использовать для генерации Gateway.
Для того чтобы указать swipe, что для интерфейса
необходимо сгенерировать gateway надо указать опцию Gateway
в Interface
// +build swipe
package example
import ( "github.com/example/app/pkg/controller" "github.com/example/app/pkg/swipe/gokit")
func swipe() { gokit.Gokit( gokit.Interface( (*controller.ExampleController)(nil), "example", gokit.Gateway(), ), gokit.HTTPServer(), gokit.JSONRPCEnable(), gokit.JSONRPCPath("/rpc"), )}
В данном примере swipe сгенерирует серверную часть на основе интерфейса, но в качестве имплементации нужно будет передать определенные настройки:
import "github.com/go-kit/kit/sd"
type ExampleOption struct { Instancer sd.Instancer Factory func(string) (ExampleInterface, error) Create EndpointOption}
type EndpointOption struct { Balancer BalancerFactory RetryMax int RetryTimeout time.Duration}
Instancer
- интерфейс из пакетаgithub.com/go-kit/kit/sd
, если не нужна ни какая балансировка то достаточно будет использоватьsd.FixedInstancer
Factory
- фабрика создания экземпляра интерфейса, в данном примере этоExampleInterface
Create
- опции для методаBalancer
- тип балансировки если используется неsd.FixedInstancer
, по умолчанию используетсяgithub.com/go-kit/kit/sd/lb.NewRoundRobin
RetryMax
- кол-во повторных запросов при возникновении ошибкиRetryTimeout
- таймаут повторного запроса