package rest import ( "log" "sync" "time" ) type ExampleGroup struct { ID int64 Name string } type ExamplePermission struct { ID int64 Name string } type ExampleUser struct { ID int64 Name string Token string Group *ExampleGroup Permissions []*ExamplePermission } // ExapmleApp реализует интерфейс IApplication, который отдает серверу параметры подключения, // секретный ключ шифрования токена авторизации, // а так же обрабатывает поступающие запросы type ExampleApp struct { addr string secret []byte users *sync.Map groups *sync.Map permissions *sync.Map } func (s *ExampleApp) Addr() string { return s.addr } func (s *ExampleApp) Secret() []byte { return s.secret } func (s *ExampleApp) Executer(r *Request) (IExecuter, bool) { return nil, false } // ExampleNew показывает пример создания и запуска сервера с RestAPI func ExampleNew() { // создаем новый сервер с использованием приложения ExampleApp restServ := New(&ExampleApp{}) // пробуем запустить его. Если через секунду запуск не удался, будет возвращена ошибка if err := restServ.Listen(time.Second); err != nil { // ошибка запуска log.Fatal(err) } } type ExampleRequestRegister struct { ID int64 `rest:"id"` Name string `rest:"name"` RoleIDS []int64 `rest:"role_ids"` GroupID int64 } func (s *ExampleRequestRegister) Validate(req *Request) *Response { // вилидируем группу //group, check := req. return nil }