git clone https://github.com/GUAIK-ORG/go-restful.git
go run main.go -log_dir=log -alsologtostderr
./test/session.html
предоставляет тестовый пример для входа в систему на JavaScript, который можно запустить двойным щелчком мыши. Для тестирования используются следующие учётные данные: email: demo@guaik.org passwd: hello!
Создайте файл abtest.txt
со следующим содержимым:
{
"email": "demo@guaik.org",
"passwd": "hello!"
}
Используйте команду ab
для тестирования:
ab -n 10000 -c 100 -p "./abtest.txt" -T "application/json" -H "Content-Type: application/json" http://localhost:8080/session
Тестирование на локальном компьютере (можно использовать при наличии доступного сервера):
Параметр | Конфигурация |
---|---|
OS | MacBook Pro (13-inch, Late 2016, Four Thunderbolt 3 Ports) |
CPU | 2.9 ГГц двухъядерный Intel Core i5 |
RAM | 8 ГБ 2133 МГц LPDDR3 |
Результаты тестирования:
Фреймворк go-restful стандартизирует разработку Restful-интерфейсов и предоставляет четыре метода операций: post
, delete
, put
и get
.
В каталоге ./cmd
находится файл session.go
, который реализует стандартный обработчик Restful. Его можно использовать в качестве примера.
Фреймворк предоставляет стандартные возвращаемые данные. Если статус равен 0, это означает успешное выполнение операции, а данные можно получить в теле ответа.
Чтобы установить успешный статус в обработчике, используйте следующий код:
resp.Success(map[string]interface{} {
"uid": uid,
"token": token,
})
Клиент получит следующие данные:
{"status": 0, "error_code": 0, "error_msg": null, "body": {"token": "xxxxxxxx", "uid": "10001"}}
Фреймворк поддерживает многоязычные сообщения об ошибках. Ошибки можно зарегистрировать с помощью конфигурации:
restful.HandlerOpts{
// Конфигурация ошибок интерфейса
MakeErrorFunc: func(err *restful.Errors){
err.NewError("SESSION.10000", "email or passwd error")
err.Translate("SESSION.10000", "cn", "邮箱或密码错误") // Китайский перевод
},
},
Данные, полученные клиентом, будут выглядеть так:
{"status": -1, "error_code": ""SESSION.10000"", "error_msg": {"cn": "邮箱或密码错误", "en": "email or passwd error"}, "body": null}
Во фреймворке можно настроить собственный анализатор запросов. По умолчанию предоставляется анализатор формата JSON в файле ./parser/json-parser.go
.
Фреймворк также поддерживает очередь фильтров, которые выполняют предварительную обработку данных запроса. В каталоге ./filters
по умолчанию доступны два фильтра.
check.go отвечает за проверку параметров и поддерживает типы данных string, float64, int64, bool, []interface{} и регулярные выражения.
token.go используется для проверки информации о токенах доступа. (Необходимо интегрировать с кешем и базой данных для модификации.)
Фильтры можно применить к обработчикам. Если любой из фильтров вернёт ошибку error != nil
, последующие фильтры не будут выполняться, и запрос будет отклонён.
restful.HandlerOpts{
Filters: []restful.Filter{
// 1、Этот интерфейс требует проверки токена, если токен недействителен, он не будет выполнен
&filter.CheckToken{},
// 2、Проверка параметров
&filter.CheckParams{
// Проверка параметров
Params: map[string]interface{}{
// Регулярная проверка
"email": filter.FieldRegexp(`^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$`),
// Строка длиной от 6 до 12 символов
"passwd": filter.FieldString().SetLength(6, 12),
},
},
},
},
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )