1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-guaik-go-restful

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

🚀GO-Restful 框架

Быстрое начало

Установка

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

Результаты тестирования:

ab-load


Введение в фреймворк

Фреймворк 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 )

Вы можете оставить комментарий после Вход в систему

Введение

go-restful — это RESTful фреймворк, разработанный на Golang. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-guaik-go-restful.git
git@api.gitlife.ru:oschina-mirror/mirrors-guaik-go-restful.git
oschina-mirror
mirrors-guaik-go-restful
mirrors-guaik-go-restful
master