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

OSCHINA-MIRROR/devfeel-dotweb

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
version.MD 58 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 19:18 789478c

dotweb 版本记录:

Version 1.7.9.1

  • Opt: оптимизировать расположение файлов.
  • Opt: удалить файлы websocket.go, hijack.go и errors.go, добавить их в dotweb.go и context.go.
  • 2019-11-23 15:00 в Шанхае.

Version 1.7.9

  • Opt: оптимизировать код создания HTML.
  • Opt: оптимизировать core.CreateTablePart, core.CreateTableHtml и core.CreateHtml.
  • 2019-11-20 07:00 в Шанхае.

Version 1.7.8

  • Opt: оптимизировать tree.go.
  • Opt: исправить некоторые проблемы с паникой при конфликте «catch-all» подстановочных знаков.
  • Opt: использовать const maxParamCount вместо магического числа.
  • Opt: оптимизировать countParams.
  • Opt: оптимизировать incrementChildPrio.
  • Opt: исправления стиля комментариев.
  • Opt: улучшить проверку имени параметра.
  • Opt: исправить ошибку maxParams.
  • 2019-11-19 12:00 в Шанхае.

Version 1.7.7

  • Opt: Оптимизировать способ отображения системы маршрутизации dotweb/state и dotweb/routers для удобства чтения в виде таблицы.
  • Feature: Добавить core.TableHtml и core.CreateTableHtml() для генерации соответствующего HTML-кода.
  • About:
    • Можно получить доступ к dotweb/state для просмотра информации о текущем экземпляре во время выполнения.
    • Можно получить доступ к dotweb/routers, чтобы просмотреть всю зарегистрированную информацию о маршрутах текущего экземпляра.
  • 2019-11-12 18:00 в Шанхае.

Version 1.7.6

  • Fix: Исправить проблему, когда изменение StatusCode было неэффективным при вызове SetMethodNotAllowedHandle.
  • Opt: Удалить логику установки кода 405 на этапе маршрутизации, соответствующая логика реализована в DefaultMethodNotAllowedHandler.
  • About MethodNotAllowedHandle:
    • По умолчанию используется DefaultMethodNotAllowedHandler.
    • Если вызвать SetMethodNotAllowedHandle, то будет использоваться пользовательский код, который перекрывает DefaultMethodNotAllowedHandler.
  • Как использовать SetMethodNotAllowedHandle:
app.SetMethodNotAllowedHandle(func(ctx dotweb.Context){
    ctx.Redirect(301, "/")
})
  • 2019-11-10 00:00 в Шанхае.

Version 1.7.5

  • Feature: В Router добавлена поддержка RegisterHandlerFunc для регистрации функций типа go http.HandlerFunc.
  • Feature: HttpServer теперь поддерживает RegisterHandlerFunc и RegisterRoute.
  • Opt: В Router добавлены вспомогательные функции transferHandlerFunc и transferStaticFileHandler.
  • Пример: Изменить пример /router, добавив пример RegisterHandlerFunc.
  • О RegisterHandlerFunc:
    • Func: RegisterHandlerFunc(routeMethod string, path string, handler http.HandlerFunc) RouterNode.
  • Использование RegisterHandlerFunc:
func HandlerFunc(w http.ResponseWriter, r *http.Request){
    w.Write([]byte("go raw http func"))
}

server.RegisterHandlerFunc("GET", "/h/func", HandlerFunc)
  • 2019-11-07 01:00 в Шанхае.

Version 1.7.4

  • Новая функция: В HttpServer.RegisterServerFile добавлен параметр excludeExtension для настройки файлов с расширениями, которые не должны быть доступны.
  • Обновление: Добавлен ErrNotFound.
  • Об HttpServer.RegisterServerFile:
    • Демонстрация: server.RegisterServerFile(RouteMethod_GET, "/src/*", "/var/www", nil).
    • Демонстрация: server.RegisterServerFile(RouteMethod_GET, "/src/*filepath", "/var/www", []string{".zip", ".rar"}).
    • Когда excludeExtension установлен в nil, все файлы доступны.
    • Это обновление включает изменения API.
  • Исправлено для проблем #125 и #212.
  • 2019-11-04 01:00 в Шанхае.

Version 1.7.3

  • Новая функция: Ограничение размера содержимого PostBody в Request установлено по умолчанию на 32 МБ.
  • О MaxBodySize:
    • Устанавливается через app.HttpServer.SetMaxBodySize.
    • Значение по умолчанию — 32 << 20 (32 Мб).
    • -1 : без ограничений.
    • 0 : использовать значение по умолчанию.
    • другое: использовать другое значение.
  • Спасибо @wziww за предоставленный PR.
  • 2019-10-29 12:00 в Шанхае.

Version 1.7.2

  • Исправлена ошибка: В Request.Release() добавлена обработка realUrl.
  • 2019-10-23 12:00 в Шанхае.

Version 1.7.1

  • Новая функция: Добавлены stringx.CompletionRight и CompletionLeft для указания длины двух сторон строки.
  • Update: Улучшена система dotweb/routers, выводя формат method+router, например: "GET /dotweb/routers".
  • 2019-07-27 08:00 в Шанхае.

Version 1.7.0

  • Новая функция: Новый плагин NotifyPlugin, который по умолчанию интегрирован с мониторингом изменений конфигурации и горячим перезапуском.
  • Новая функция: DotWeb.ReSetConfig для перезагрузки конфигурации во время работы.
  • О NotifyPlugin:
    • Создаётся с помощью NewDefaultNotifyPlugin для создания плагина по умолчанию.
    • Действует только при запуске Dotweb через конфигурацию, отслеживая изменения в конфигурационном файле по умолчанию.
    • При изменении конфигурации или горячем перезапуске Dotweb сам по себе не перезагружается.
    • Благодарим @地蛋 за поддержку этого плагина.
  • 2019-07-22 14:00 в Шанхае.

Version 1.6.9

  • Новые функции: Увеличение плагина механизма — Plugin

Plugin запускается вместе с App и не блокирует процесс запуска. Для непрерывного выполнения, обработку нужно выполнить в Run внутри плагина.

Architecture: исправлена ошибка в именовании BaseMiddlware, добавлен BaseMiddleware, сохранён BaseMiddlware до версии 2.0.

About Plugin:

  • Регистрация плагина через dotweb.UsePlugin.
  • Для пользовательских плагинов требуется предварительно создать интерфейс плагина.
  • Скоро будет выпущен интегрированный плагин для мониторинга изменений конфигурационного файла и горячего перезапуска плагина.

Дата: 12 июля 2019 года, Шанхай.

Версия 1.6.8

Architecture: удалён OfflineServer.

Example: удалены примеры render\developmode\start.

Bug fix: обновлён тег до v1.6.8 для модулей Go.

About examples:

Дата: 29 июня 2019 года, дом в Шанхае.

Версия 1.6.7

New Feature: добавлена поддержка модуля Go.

Architecture: убран vendor.

Дата: 29 июня 2019 года, дом в Шанхае.

Версия 1.6.6

New Feature: добавлено промежуточное ПО AccessLog для регистрации HTTP-запросов в формате Apache Common Log.

New Feature: добавлен Raw() в dotweb.Logger.

About AccessLog:

  • Реализует формат журнала Apache Common.
  • Имя файла журнала похоже на «dotweb_accesslog_2017_06_09.log».
  • Пример журнала: 127.0.0.1 — frank [10/Oct/2000:13:55:36 -0700] «GET /apache_pb.gif HTTP/1.0» 200 2326.

Как использовать промежуточное ПО AccessLog:

app.Use(accesslog.Middleware())
server.GET("/", Index).Use(accesslog.Middleware())

Дата: 27 июня 2019 года, отель «Хуанъань» в Шэньчжэне.

Версия 1.6.5

Architecture: core.GlobalState перемещён в dotweb.StateInfo().

Architecture: добавлен HttpServer.StateInfo(), который является ярлыком для DotWeb.StateInfo().

Удалён: удалено неиспользуемое свойство valueNodePool в маршрутизаторе.

О dotweb.StateInfo:

  • Можно использовать ctx.HttpServer().StateInfo() для получения этого объекта.
  • Можно посетить /virtualPath/dotweb/state, чтобы просмотреть всю информацию о состоянии.

Дата: 26 июня 2019 года.

Версия 1.6.4

Архитектура: добавлен dotweb_sysgroup.go для реализации IncludeDotwebGroup.

Новая функция: добавлен /virtualPath/dotweb/routers для просмотра всех экспресс-маршрутов маршрутизатора.

Новая функция: добавлен Router.GetAllRouterExpress для возврата router.allRouterExpress.

Исправлена ошибка: обновлены примеры в версии dotweb 1.6.4.

Об IncludeDotwebGroup:

  • Если используется dotweb.New(), по умолчанию он не вызывает IncludeDotwebGroup.
  • Если используется dotweb.Classic(), по умолчанию вызывается IncludeDotwebGroup.

Дата: 22 июня 2019 года.

Версия 1.6.3

Архитектура: logger.Logger() перемещён в DotWeb.Logger().

Архитектура: добавлен HttpServer.Logger, который является ярлыком для DotWeb.Logger().

Архитектура: удалён logger.Logger().

Использование dotweb.Logger в приложении:

func TestLog(ctx dotweb.Context) error {
  ctx.HttpServer().Logger().Info(dotweb.LogTarget_Default, "test log")
  return ctx.WriteString("log page")
}

Дата: 13 июня 2019 года.

Версия 1.6.2

Исправлена ошибка: cryptos.GetRandString теперь возвращает рандомизированную строку заданной длины.

Подробности:

  • По умолчанию набор символов — «0123456789abcdefghijklmnopqrstuvwxyz».

Демонстрация:

func main() {
    fmt.Println(cryptos.GetRandString(10))
}

Дата: 20 февраля 2019 года.

Версия 1.6.1

Новая функция: в RouterNode добавлен RouterNode.Path() для получения пути маршрутизации запроса.

Детали:

  • Можно использовать ctx.RouterNode().Path() для получения пути маршрутизации запроса.
  • Можно использовать ctx.HttpServer().Router().MatchPath для сопоставления запроса и пути маршрутизации.

Демонстрация:

func main() {
  app := dotweb.Classic("/home/logs/wwwroot/")

  // if use this, all router will auto add "HEAD" method support
  // default is false
  app.HttpServer.SetEnabledAutoHEAD(true)

  app.HttpServer.GET("/index", func(ctx dotweb.Context) error{
      flag := ctx.HttpServer().Router().MatchPath(ctx, "/index")
      return ctx.WriteString("welcome to my first web!" + ctx.RouterNode().Path() + " - " + fmt.Sprint(flag))
  })

  err := app.StartServer(80)
    fmt.Println("dotweb.StartServer error => ", err)
}

Дата: 12 февраля 2019 года. Текст на русском языке:

time.Second * 10)

app.HttpServer.GET("/index", func(ctx dotweb.Context) error{ return ctx.WriteString("welcome to my first web!") })

//begin server err := app.StartServer(80) fmt.Println("dotweb.StartServer error => ", err) }

* 2019-01-02 18:00

#### Version 1.5.9.4
* Fix UT in cache/runtime
* Remove invalid lock in cache/runtime
* 2018-12-29 12:00

#### Version 1.5.9.3
* Translate Chinse to English
* Update by @yangbor
* 2018-12-28 10:00

#### Version 1.5.9.2
* Fix typo and translate Chinse to English
* Reformat code
* Update by @yangbor
* 2018-12-19 18:00

#### Version 1.5.9.1
* New Feature: Add Request.RealIP used to returns the first ip from 'X-Forwarded-For' or 'X-Real-IP' header key, fixed for #164
* New Feature: route.ServerFile support '*filepath' or '/*', to simplify register static file router, fixed for #125
* Example:
``` golang
app.HttpServer.ServerFile("/*", "D:/gotmp")
```
* update example/main
* 2018-12-03 15:00

#### Version 1.5.9
* New Feature: Add HttpServer.SetEnabledStaticFileMiddleware, used to set flag which enabled or disabled middleware for static-file route
* Detail:
  - if enabled, when visit static file route, will use middlewares like other router
  - the execute order: App -> Group -> Router
  - default is not enabled
* Example:
``` golang
app.HttpServer.SetEnabledStaticFileMiddleware(true)
```
* New Feature: Add Group.ServerFile used to registe static file router in group
* New Feature: Add ping check when init redis session, if can not ping successful, it will panic error info, like "panic: redis session [redis] ping error"
* update dotweb-example/static
* 2018-10-30 15:00

#### Version 1.5.8
* New Feature: Add HttpServer.SetBinder, used to set custom Binder on HttpServer
* Detail:
  - Custom binder must implement dotweb.Binder interface
* Example:
  ``` golang
  app.HttpServer.SetBinder(newUserBinder())
  ```
* update example/bind
* 2018-10-24 21:00

#### Version 1.5.7.8
* Improve Comments about session Maxlifetime
* Session.StoreConfig.Maxlifetime: session life time, with second
* 2018-09-20 15:00

#### Version 1.5.7.7
* New Feature: Add HttpServer.SetEnabledAutoOPTIONS, used to set route use auto options
* Detail:
  - ignore auto set if register router is options method
  - you can view example on example/router
* Example:
  ``` golang
  app.HttpServer.SetEnabledAutoOPTIONS(true)
  ```
* Fixed Bug: When use HttpServer.SetEnabledAutoHead, ignore auto set if register router is head method
* Log output: Add debug log when AutoOPTIONS and AutoHead doing
* Like:

2018-09-19 15:44:42.8189 [DEBUG] [router.go:437] DotWeb:Router:RegisterRoute success [GET] [/] [main.Index] 2018-09-19 15:44:42.8199 [DEBUG] [router.go:462] DotWeb:Router:RegisterRoute AutoHead success [HEAD] [/] [main.Index] 2018-09-19 15:44:42.8199 [DEBUG] [router.go:474] DotWeb:Router:RegisterRoute AutoOPTIONS success [OPTIONS] [/] [main.Index]

* 2018-09-19 18:00

#### Version 1.5.7.6
* New Feature: Add Renderer.RegisterTemplateFunc, used to register template func in renderer
* Detail:
- now inner support inner func like unescaped
- you can view example on example/render
* Example:
``` golang
app.HttpServer.Renderer().RegisterTemplateFunc("echo", func(x string) interface{}{
      return "echo:" + x
  })
```
* 2018-09-07

#### Version 1.5.7.5
* Fixed Bug: return err from Next() in RequestLogMiddleware & TimeoutHookMiddleware
* 2018-08-30 10:00

#### Version 1.5.7.4
* Fixed Bug: Remove auto set NotFound http status when happened 404, if auto set, it will ignore any ContentType set
* For issue #149 router middleware handle http 404,405. cann`t response content-type:application/json, Thanks for @lyw1995
* Update: Add HostName in State page
* 2018-08-28 13:00

#### Version 1.5.7.3
* New Feature: Add HttpServer.VirtualPath, used to set virtual path when deploy on no root path
* Detail:
- when set virtual path "/vpath", if set route "/index", it will auto register "vpath/index"
- in effect on group & route
* 2018-08-24 19:00

#### Version 1.5.7.2
* Fixed Bug: **App.RunMode всегда равен RunMode_Development**

* Обновление: добавлен вывод журнала RunMode
* 2018-08-24 10:00

#### Версия 1.5.7.1
* Добавлен вывод журнала DotWeb Mock
* Поддержка Mock Register\RegisterString\RegisterJson
* Обновлён README
* 2018-08-22 10:00

#### Версия 1.5.7
* Новая функция: добавлена интеграция Timeout Middleware, поддержка DotWeb.UseTimeoutHook для её использования
* Деталь:
- Предоставлен DefaultTimeoutHookHandler для упрощения использования, он автоматически записывает в журнал информацию о запросе, который завершился с ошибкой
- Пример:
``` golang
app.UseTimeoutHook(dotweb.DefaultTimeoutHookHandler, time.Second * 2)
```
* Новая функция: добавлен модуль Mock, поддержка DotWeb.SetMock для его использования
* Деталь:
- Предоставлена StandardMock для упрощения использования, она реализует интерфейс Mock
- Также можно создать пользовательскую реализацию
- Можно зарегистрировать MockHandle или вернуть строку
- Регистрация ключа поддерживает только маршрут
- Специальное предложение: режим Mock эффективен только в режиме DevelopMode
- Пример:
``` golang
func AppMock() dotweb.Mock{
  m := dotweb.NewStandardMock()
  m.RegisterString("/", "mock data")
  return m
}
app.SetMock(AppMock())
```
* 2018-08-22 10:00

#### Версия 1.5.6.1
* Исправлена ошибка: hystrix добавляет doCleanHistoryCounter, используемый для очистки счётчика истории
* 2018-08-18 10:00

#### Версия 1.5.6
* Новая функция: добавлен модуль hystrix, теперь используется для автоматического переключения на резервное хранилище Redis сессии
* Новая функция: Session.StoreConfig поддерживает BackupServerUrl, используется для хранения сессии, когда сервер IP по умолчанию недоступен
* Деталь:
- hystrix по умолчанию MaxFailedNumber составляет 20 за 2 минуты
- Пример:
```
sessionConf := session.NewDefaultRedisConfig("redis://10.10.0.1:6322/1")
sessionConf.BackupServerUrl = "redis://10.10.0.1:6379/1"
```
* 2018-08-17 15:00

#### Версия 1.5.5
* Новая функция: /dotweb/state добавлено CurrentRequestCount данных
* Улучшение: производительность приложения улучшена на 30%
* 2018-08-09 15:00

#### Версия 1.5.4
* Новая функция: Session.StoreConfig поддерживает CookieName, используется для установки пользовательского имени cookie, которое хранит sessionid, по умолчанию — dotweb_sessionId
* Обновление: Config.SessionNode добавлен CookieName, используется для настройки пользовательского имени cookie, которое сохраняет sessionid
* Обновление: формат журнала по умолчанию обновлён до «Время [LogLevel] [FileName:Line] Содержание»
* Исправлена ошибка: удалён init сеанса, который выполняется при dotweb.initAppConfig
* 2018-08-02 15:00

#### Версия 1.5.3
* Новая функция: HttpServer добавляет Validator, вызываемый Context.Validate()
* Новая функция: Context добавляет Validate(interface{}), используемый для проверки данных с помощью HttpServer::Validator
* Обновление: использование routerExpressSplit заменяет «_» при заполнении данных в Router::RouterExpress
* 2018-07-12 12:00

#### Версия 1.5.2
* Новая функция: dotweb.innerRenderer добавлен режим кэша, по умолчанию включён
* Новая функция: dotweb.innerRenderer добавлена NewInnerRendererNoCache(), используемая для отключения кэша
* Обновление для запуска приложения: если это режим разработки, то внутренний рендерер по умолчанию будет использовать режим без кэширования
* 2018-06-22 14:00

#### Версия 1.5.1
* Исправление ошибки: двойная sprintf в logger.xlog
* 2018-06-15 14:00

#### Версия 1.5
* Новая функция:UploadFile.RandomFileName используется для получения случайного имени файла из uuid
* Новая функция: encodes.base64x используется для быстрого использования base64 EncodeString и DecodeString
* Новая функция: session.NewRedisConfig используется для создания конфигурации сеанса redis, включая serverUrl и storeKeyPre
* Если вы установите пользовательский storeKeyPre, он будет начинаться с пользовательского набора, по умолчанию это «dotweb:session:»
* 2018-06-08 17:00 Состояние страницы: при обращении к /dotweb/state добавляется поле CurrentTime в вывод.

* Ошибка: исправление Response автоматическое освобождение не сбрасывает поле body, что приводит к ошибке переполнения памяти.
* 2018-05-10 13:30

#### Версия 1.4.9.3
* Важно: адаптация версии Go до 1.9+
* Настройка UploadFile.Size реализация метода, прямое возвращение данных Header.Size
* Настройка dotweb.Classic подпись как Classic(logPath string), если logPath пустой, то по умолчанию каталог журнала «bin-root/logs»
* Добавление dotweb.ClassicWithConf(config *config.Config), поддержка инициализации передачи конфигурации
* Настройка по умолчанию каталога журнала с «bin-root» на «bin-root/logs»
* 2018-04-24 08:30

#### Версия 1.4.9.2
* Исправление ошибки для #112
* Настройка CharsetUTF8 значение как «charset=utf-8»
* 2018-03-28 09:00

#### Версия 1.4.9.1
* Встроенный каталог Vendor только golang.org/x/net пакет, удаление пакетов redis и yaml
* Улучшение интерфейса RedisClient
* 2018-03-13 12:00

#### Версия 1.4.9
* Новое: в ConcurrenceMap добавлен интерфейс GetTimeDuration для прямого возврата данных типа time.Duration
* Новое: в ReadonlyMap добавлен интерфейс GetTimeDuration для прямого возврата данных типа time.Duration
* Новое: dotweb добавлен интерфейс UseTimeoutHook для установки обработчика запроса, который выполняется дольше установленного времени
* Настроено: dotweb интегрирует три класса промежуточного программного обеспечения, без необходимости отдельной ссылки на библиотеку Middleware
  * RequestLogMiddleware
  * TimeoutHookMiddleware
  * dotweb.SetExceptionHandle
* Новое: example/basemiddleware
* Интеграция vendor: gopkg.in/yaml.v2
* 2018-02-12 12:00

#### Версия 1.4.8
* Настроено: ItemContext переименован в ItemMap, добавлены интерфейсы ConcurrenceMap и ReadonlyMap
* Настроено: Dotweb.AppContext изменено на Dotweb.Items
* Настроено: HttpContext.AppContext изменено на HttpContext.AppItems
* Настроено: HttpContext.AppSetConfig изменено на HttpContext.ConfigSet
* Настроено: config.AppSet изменено на config.ConfigSet
* Новое: config.ParseConfigSetXML\ParseConfigSetJSON\ParseConfigSetYaml для разбора конфигурационных файлов формата Key\Value
* Новое: config.Config.IncludeConfigSet для включения конфигурационного файла формата Key\Value в config.ConfigSet через HttpContext.ConfigSet для получения связанной информации о настройках
* ParseConfigSetXML поддерживает разбор XML-файлов, возвращает core.ConcurrenceMap
* ParseConfigSetJSON поддерживает разбор JSON-файлов, возвращает core.ConcurrenceMap
* ParseConfigSetYaml поддерживает разбор YAML-файлов, возвращает core.ConcurrenceMap
* Конкретный формат конфигурационного файла можно посмотреть в example/configset
* Новый пример кода example/configset
* 2018-01-24 22:00

#### Версия 1.4.7
* Исправлена ошибка: исправлена проблема с конкретным сценарием использования Middleware
* Добавлено dotweb.IncludeDotwebGroup для автоматической интеграции связанных маршрутов dotweb
* /dotweb/state добавлено ServerVersion в вывод
* 2018-01-22 22:00

#### Версия 1.4.6
* Исправлена ошибка: UploadFile устаревший интерфейс Bytes, новый интерфейс ReadBytes для возврата загруженного файла
* Обратите внимание: поскольку io.read имеет одноразовый характер, UploadFile.SaveFile и UploadFile.ReadBytes могут использовать только один из них, другой не сможет нормально получить данные
* Добавлен dotweb.Version для вывода номера версии фреймворка
* 2018-01-21 09:00

#### Версия 1.4.5
* Поддержка конфигурационных файлов в формате YAML, см. example/config/dotweb.yaml
* В config добавлены UnmarshalYaml\MarshalYaml\MarshalYamlString для обработки Yaml
* В config добавлены UnmarshalXML\MarshalXML\MarshalXMLString для обработки XML
* В config добавлены UnmarshalJSON\MarshalJSON\MarshalJSONString для обработки JSON
* В UploadFile добавлен интерфейс Bytes для возврата загружаемого файла
* Доработка example/config
* Удалено example/session, для дополнительных примеров перейдите по ссылке https://github.com/devfeel/dotweb-example
* 2018-01-20 23:40

#### Версия 1.4.4
* Настроено: получение req.Body внутри модуля Bind изменено на HttpContext.PostBody, чтобы избежать повторного получения Post-контента после Bind
* Доработана функция ведения журнала отладки
* Обновлён example/static, этот пример в настоящее время реализует функцию чистого статического файлового сервера
* * 2018-01-08 12:00

#### Версия 1.4.3
* Настроена логика внутренней маршрутизации dotweb, режим New по умолчанию выключен, режим Classic по умолчанию включён, можно включить вручную с помощью app.UseDotwebRouter
* Исправлена проблема #100, решена проблема, когда Exclude не работает в определённом сценарии
* Use filepath.Ext для замены file.GetFileExt, обновление для проблемы #99
* Удалён framework/file.GetFileExt
* Синхронное обновление примера кода
* 2018-01-07 22:00

#### Версия 1.4.2
* Context добавлен интерфейс QueryInt\QueryInt64 для упрощения получения Int-типа Get-параметра, если параметр не передан или не является допустимым целым числом, возвращается 0
* Интерфейс Context изменён: кроме Write, другие функции WriteXXX возвращают ошибку вместо (int, error)
* Приводит к следующему изменению:
```
app.HttpServer.GET("/index", func(ctx dotweb.Context) error{
  _, err := ctx.WriteString("welcome to my first web!")
  return err
})
```
Упрощено до:
```
app.HttpServer.GET("/index", func(ctx dotweb.Context) error{
  return ctx.WriteString("welcome to my first web!")
})
```
* Синхронно обновлён пример кода
* 2018-01-03 22:00

#### Версия 1.4.1
* dotweb добавил интерфейс ExcludeUse для настройки исключения маршрутов для определённых промежуточных программ, исправлено для #94, рекомендуется добавить метод exuse для реализации функции exclude uri
* Настроен dotweb, часть внутренних функций переименована
* Рефакторинг реализации Middleware, улучшена структура кода, процесс стал более понятным
* Node добавил AppMiddlewares и GroupMiddlewares для хранения экземпляров промежуточного ПО уровня приложения и группы
* Middleware добавил интерфейсы Exclude
* Exclude(routers ...string) для указания исключаемых маршрутов
* HasExclude() bool для определения, существует ли текущий экземпляр промежуточного ПО исключающий маршрут
* ExistsExcludeRouter(router string) bool для определения наличия указанного маршрута в текущем экземпляре промежуточного ПО с исключённым маршрутом
* Приоритет выполнения промежуточного ПО:
- Приоритет 1: промежуточное ПО уровня приложения
- Приоритет 2: промежуточное ПО группового уровня
- Приоритет: промежуточное ПО на уровне маршрутизатора
* Обновление example/middleware
* 2018-01-01 23:00:00 2) Если распознан Content-Type = application/xml, будет предпринята попытка использовать xml сериализацию в struct.

3) В случае любого другого типа, по умолчанию будет распознаваться модель key/value для формы.
* Context.Request() новый интерфейс PostValues, возвращающий map[string][]string для POST, PATCH или PUT запросов.
* Улучшение раздела Readme с описанием текста.
* Доработка example/bind.
* 2017-12-29 16:00:00.

#### Версия 1.3.9
* Новый интерфейс FormFiles добавлен в Request для поддержки множественной загрузки файлов.
* Исправлена ошибка #92 — теперь поддерживается одновременная загрузка нескольких файлов.
* Сервер поддерживает SetEnabledBindUseJsonTag для настройки использования json тегов в bind (по умолчанию false).
* Исправлена ошибка #91 — запросы GET теперь могут выполнять метод bind на основе переданных параметров, но пока что поддерживаются только теги form, можно рассмотреть возможность поддержки json.
* Спасибо @githubityu.
* Доработана секция example/bind.
* 2017-11-30 17:00:00.

#### Версия 1.3.8
* Усовершенствован redisutil, добавлена поддержка операций hset и set.
* Благодаря PR от @chacha923.
* 2017-11-23 00:00.

#### Версия 1.3.7
* Добавлен новый способ инициализации Classic для приложения, изменены настройки New.
* Логирование теперь отключено по умолчанию (false), его можно включить через SetEnabledLog(true) или SetDevelopmentMode().
* dotweb.New() инициализирует только необходимые компоненты, удаляет печать логотипа и запуск журнала.
* В режиме dotweb.Classic() логирование включено по умолчанию, также по умолчанию включён middleware RequestLog и печатается логотип и запускается журнал.
* dotweb.SetDevelopmentMode() добавляет переключатель логирования к существующей функции печати экрана.
* Добавлена секция example/start.
* 2017-11-10 21:30.

#### Версия 1.3.6
* Обновлён Redis до версии redigo V1.2.0.
* Изменён метод создания пула в классе Redis, Dial заменён на DialUrl.
* Устаревший формат строки подключения Redis 10.0.1.11:6379 больше не используется.
* Вместо него используется формат redis://:password@10.0.1.11:6379/0.
* Обновлено example/session.
* 2017-11-08 09:00.

#### Версия 1.3.5
* Повышена производительность UUID, изменён алгоритм UUID, добавлен пакет UUID.
* HttpServer теперь имеет переключатель для включения уникального идентификатора запроса, по умолчанию он выключен, при включении используется 32-битный UUID, который можно получить через ctx.RequestID.
* Предоставлена функция HttpServer.SetEnabledRequestID().
* Доступны алгоритмы UUID V1, V2, V3 и V4.
* Перемещение example/exception в devfeel/dotweb-example.
* Перемещение example/uploadfile в devfeel/dotweb-example.
* Добавление ссылки на кулинарную книгу.
* 2017-11-02 16:00. **1.** Поминутно с интервалом в 1 минуту, по умолчанию сохраняются данные за последние 60 минут. Исключая посещения страниц системы на уровне "/dotweb/", подсчитывается количество запросов за каждую минуту.

**2.** С момента запуска службы DetailRequestPageData подсчитывается общее количество запросов для каждой страницы, исключая посещения страниц системы на уровне "/dotweb/".

**3.** Поминутно с интервалом в 1 минуту, по умолчанию сохраняются данные за последние 60 минут, подсчитывается количество ошибок за каждую минуту.

**4.** С момента запуска службы DetailErrorPageData подсчитывается общее количество ошибок для каждой страницы.

**5.** С момента запуска службы подсчитывается общее число исключительных ситуаций.

**6.** С момента запуска службы подсчитывается общее количество HTTP-кодов состояния для каждого кода.

**7.** Данные можно получить через {host}/dotweb/state.

**[Новое]:** Добавлен интерфейс dotweb/state/interval для базового запроса данных по минутам.

Основные данные:

* **Time** — строка, обозначающая время запроса, с минимальным шагом в одну минуту (например: 201709251200).

* **RequestCount** — количество запросов, накопленных за указанный интервал времени (исключая посещения страниц системы на уровне "/dotweb/").

* **ErrorCount** — количество ошибок, накопленных за указанный интервал времени.

2017-09-25 13:00

**Version 1.0.1**

Добавлено logger.SetEnabledConsole. При установке SetDevelopmentMode автоматически включается. SetEnabledConsole автоматически выводит основные журналы dotweb в консоль, что удобно для отладки разработчиками в реальном времени. Улучшены журналы и комментарии.

2017-08-31 08:30

**Version 1.0.0**

Dotweb официально переходит в эпоху 1.0! Спасибо всем!

В HttpServer добавлен IndexPage(), который возвращает имя текущей страницы по умолчанию для сервера. Поддерживается настройка через конфигурационный файл. Если конфигурация не задана, используется значение по умолчанию: DefaultIndexPage = "index.html".

Улучшен контекст с добавлением интерфейсов File, Attachment и Inline. Спасибо @esap за issue #39.

Context.File(file string) отправляет указанный файл клиенту. Если указано имя каталога, то по умолчанию будет искать файл с таким именем в этом каталоге. Если файл не найден, возвращается 404.

Context.Attachment(file, name string) отправляет файл клиенту для загрузки. Для получения подробной информации обратитесь к расширению MIME-протокола «Content-disposition».

Context.Inline(file, name string) отправляет содержимое файла клиенту. Для получения подробной информации обратитесь к расширению MIME-протокола «Content-disposition».

Добавлен каталог example\file для демонстрации использования интерфейсов Context.File, Attachment и Inline.

2017-07-29 17:00

**Version 0.3.21**

Добавлены DotWeb & HttpServer.ListenAndServer(addr string), поддерживающие прослушивание хоста.

Добавлены методы Close() и Shutdown() для DotWeb для корректного завершения работы сервиса.

Расширен контекст с помощью методов Context(), SetTimeoutContext() и WithContext().

Запрос автоматически генерирует уникальный RequestID, который можно получить с помощью RequestID(). По умолчанию он помещается в dotweb.Context.context под ключом RequestID.

Добавлен тестовый каталог с общими методами тестирования и улучшенным bind_test. Спасибо @zouyx.

2017-06-14 23:10

**Version 0.3.20**

Добавлен Gzip middleware на основе https://github.com/devfeel/middleware/tree/master/gzip.

Все middleware теперь создаются с использованием метода package.Middleware().

2017-06-11 17:00

**Version 0.3.19**

Добавлен AccessLog middleware на основе https://github.com/devfeel/middleware/tree/master/accesslog. Используется dotweb.logger и уровень отладки. Формат журнала: метод userip proto status reqbytelen resbytelen timetaken. Пример журнала: [debug] 2017-06-09 08:38:10.416369 [middleware.go:49] / GET 127.0.0.1 HTTP/1.1 200 0 19 10.

Все middleware теперь создаются с использованием метода package.Middleware().

2017-06-09 08:00

**Version 0.3.18**

Добавлен Cros middleware на основе https://github.com/devfeel/middleware/tree/master/cros. Поддерживает более богатые опции, которые можно настроить в соответствии с бизнес-сценариями. Поддерживаются настройки заголовков: Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers, Access-Control-Allow-Credentials, Access-Control-Expose-Headers и Access-Control-Max-Age. P3P. HttpServer предоставляет быстрые методы маршрутизации: GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, HiJack, WebSocket и ANY. Response добавляет метод QueryHeader. Улучшена документация. Демо: https://github.com/devfeel/middleware/tree/master/example/cros.

2017-06-08 20:00

**Version 0.3.17**

Добавлен Jwt middleware на основе примера: example/jwt. Поддерживает более богатые опции, настраиваемые в соответствии с бизнес-требованиями. Можно настроить хранение токенов через Cookie, Header или QueryString. Можно настраивать обработку недопустимых токенов. После базовой проверки jwt можно расширить обработку токенов. Добавлена зависимость от github.com/dgrijalva/jwt-go. Добавлен каталог example/jwt.

2017-06-06 13:00

**Version 0.3.16**

Оптимизирована загрузка конфигурационных файлов, при неудачной загрузке возвращается ошибка. Конфигурационные файлы загружаются в следующем порядке: сначала проверяется абсолютный путь, затем корневой каталог процесса, а затем каталог конфигурации в корневом каталоге процесса. В конфигурационном файле добавлен AppSet для пользовательских настроек приложения. Пример конфигурационного файла:
```xml
<appset>
  <set key="email-host" value="mail.xx.com" />
  <set key="email-account" value="username" />
  <set key="email-password" value="password" />
  <set key="limit-per-ip" value="10" />
</appset>
```
Пример доступа к настройкам:
``` go
//запрос
ctx.AppSetConfig().GetString("email-host"))
ctx.AppSetConfig().GetInt("limit-per-ip"))
```
Обновлён каталог example/config.

2017-05-22 17:30

**Version 0.3.15**

Важные обновления: добавлен интерфейс Context и функция ExceptionHandle. Функция HttpHandle теперь возвращает ошибку. Middleware.Handle(ctx *HttpContext) error изменена на Handle(ctx Context) error. Middleware.Next(ctx *HttpContext) изменена на Next(ctx Context). Для улучшения понимания и дизайна Context внесены следующие изменения: перенесены Context.QueryStrings() в Context.Request().QueryStrings(), перенесены Context.RawQuery() в Context.Request().RawQuery(), перенесены Context.FormFile() в Context.Request().FormFile(). **Перевод текста на русский язык:**

Перенести Context.FormValues() в Context.Request().FormValues();
перенести Context.PostBody() в Context.Request().PostBody();
перенести Context.QueryHeader() в Context.Request().QueryHeader();
перенести Context.Url() в Context.Request().Url();
перенести Context.ContentType() в Context.Request().ContentType();
перенести Context.DelHeader() в Context.Response().DelHeader();
перенести Context.SetHeader() в Context.Response().SetHeader();
перенести Context.SetContentType() в Context.Response().SetContentType();
перенести Context.SetStatusCode() в Context.Response().SetStatusCode();
отменить Context.PostString(key string);
через возврат соответствующего error в handler, фреймворк автоматически попадает и обрабатывает через установленный ExceptionHandle;
обновить example/ для поддержки возвращаемых значений ошибок, поддержки интерфейса Context;
2017-05-20 15:00

#### Version 0.3.14
* Поддержка файлов конфигурации Middleware, поддержка уровней App\Group\Router;
* DotWeb добавляет методы RegisterMiddlewareFunc\GetMiddlewareFunc для регистрации методов создания промежуточного программного обеспечения;
* В стандартном журнале добавлено имя файла и номер строки — logger/xlog.go — [вкладчик: @Сяокан];
* обновить каталог example/config;
* 2017-05-17 15:00

#### Version 0.3.12
* Определение ExceptionHandle изменено с ExceptionHandle func(*HttpContext, interface{}) на ExceptionHandle func(*HttpContext, error);
* определение SetCookie для HttpContext изменено с SetCookie(cookie http.Cookie) на SetCookie(cookie *http.Cookie);
* атрибут *Server удалён из HttpModule;
* Group добавляет метод RegisterRoute(method, path string, h HttpHandle);
* добавлен уровень поддержки Group в файлы конфигурации, см. пример/каталог config для примеров конфигурационных файлов xml и json;
* обновление файла example/main, каталога example/config;
* 2017-05-15 22:10

#### Version 0.3.11
* добавлена поддержка Group, которую можно создать с помощью HttpServer.Group() или NewGroup(), в настоящее время Group поддерживает маршруты HEAD\GET\POST\PUT\OPTIONS\PATCH\DELETE;
* поддержка Middleware на трёх уровнях Use: DotWeb.Use\Group.Use\RouterNode.Use;
* оптимизация реализации Router, удаление каталога router, объединение xRouter и router.Router;
* отменено: удалена поддержка Feature уровня RouterNode, исходная RouterNode.Features.SetEnabledCROS может быть реализована с помощью пользовательского промежуточного программного обеспечения;
* обновление каталога example/middleware;
``` go
func InitRoute(server *dotweb.HttpServer) {
  server.Router().GET("/", Index)
  server.Router().GET("/use", Index).Use(NewAccessFmtLog("Router-use"))

  g := server.Group("/group").Use(NewAccessFmtLog("group"))
  g.GET("/", Index)
  g.GET("/use", Index).Use(NewAccessFmtLog("group-use"))
}
```
* 2017-05-6 00:30

#### Version 0.3.10
* добавлена поддержка промежуточного программного обеспечения, через DotWeb.Use вводится промежуточное программное обеспечение, обработка запросов происходит после HttpModule, ответы на запросы происходят перед HttpModule;
* реализация пользовательского промежуточного программного обеспечения путём разработки интерфейса Middleware для упрощения кода, на основе BaseMiddlware;
* встроенная поддержка RequestLogMiddleware через DotWeb.UseRequestLog();
* оптимизирован журнал регистрации маршрутов, добавлено имя обработчика, например: main.Index;
* обновление каталога example/middleware;
* 2017-04-23 09:00

#### Version 0.3.9.7
* добавлена поддержка формата конфигурации Json;
* обновление каталога example/config;
* 2017-04-19 09:00

#### Version 0.3.9.6
* Оптимизация и упрощение HttpContext, удаление некоторых часто используемых избыточных методов, перенос в новый тип запроса;
* запрос добавляет кэширование PostBody, которое можно повторно получить через Request.PostBody();
* Перенос: HttpContext.Proto()\Method()\FullRemoteIP()\Referer()\UserAgent()\Path()\Host()\IsAJAX перенесён в HttpContext.Request;
* Исправление ошибки: исправлена проблема с неполным освобождением Response при освобождении HttpContext;
* 2017-04-12 09:00

#### Version 0.3.9.5
* Добавлен модуль Feature, в настоящее время поддерживающий функцию CROS, которая может быть установлена на уровне HttpServer или на уровне маршрутизации RouterNode;
* добавлены настройки CROS для управления доступом к доменам и настройки AllowedOrigins, AllowedMethods, AllowedHeaders, AllowCredentials и AllowedP3P;
* PProfServer настроен как атрибут, используя SetPProfConfig, удаляя StartPProf;
* в HttpContext добавлен атрибут RouterNode для получения информации о маршруте;
* перенос: исходная функция DotWeb SetSessionConfig перенесена в HttpServer;
* отмена: DotWeb.SetSessionConfig, DotWeb.StartPProfServer;
* настройка приложения добавляет атрибуты EnabledPProf\PProfPort для настройки PProfServer;
* завершение настройки файлов и кода, завершение кода, завершение примера;
* 2017-04-09 20:00 СерверКонфиг: добавлены опции «EnabledListDir» и «EnabledAutoHEAD».

* Опция «EnabledListDir»: если она установлена, можно просматривать файлы каталога. По умолчанию опция не включена.

* Опция «EnabledAutoHEAD»: если она включена, для всех маршрутов, кроме Websocket\HEAD, будет добавлен маршрут HEAD по умолчанию. По умолчанию эта опция не включена. 

Оптимизация части кода: добавлены example\static и example\router.
Дата: 2017-03-26 19:30.

#### Версия 0.3.8
Добавлен рендеринг шаблонов. Добавлен интерфейс Renderer, который нужно реализовать. Требуется реализовать метод Render(io.Writer, string, interface{}, *HttpContext) error. Поддерживается подключение сторонних движков шаблонов, по умолчанию используется встроенный движок http/template.

В HttpContext добавлен ViewData для передачи значений в шаблон. В HttpContext также добавлен метод View() для упрощения использования шаблонов: View(name string) error.

Добавлен example\render. Дата: 2017-03-26 11:10.

#### Версия 0.3.7
Добавлен модуль Cache с поддержкой runtime, redis. Поддерживаются операции Get\Set\GetString\GetInt\GetInt64\Incr\Decr\Exists\Clear.

Модуль Cache включается через app.SetCache, используется через HttpContext.Cache().

В ItemContext добавлены интерфейсы Remove и Once, которые влияют на HttpContext.AppContext и HttpContext.Items.

Добавлен пример example\cache, проведена оптимизация части кода. Дата: 2017-03-25 22:30.

#### Версия 0.3.6.5
Проведена оптимизация кода конфигурации App, Server, Session.

Добавлены интерфейс Server и реализация OfflineServer.

Добавлен интерфейс Router, маршрутизация перенесена из HttpServer в HttpServer.Router(). Дата: 2017-03-24 14:00.

#### Версия 0.3.6
Добавлена поддержка Config для трёх классов конфигурации: Server, Session, Router.

Добавлены функции HttpServer.RegisterHandler и HttpServer.GetHandler для регистрации HttpHandle.

Добавлена конфигурация Offline, позволяющая установить приветственное сообщение или страницу обслуживания при автономном режиме.

Добавлен пример example\config. Дата: 2017-03-23 22:00.

#### Версия 0.3.5.1
Добавлен ItemContext для однократного использования в рамках одного запроса. Доступ к данным осуществляется через операции HttpContext.Items().Get\Set.

Можно использовать в OnBeginRequest, UserHandler, OnEndRequest.

Добавлен пример example\httpmodule. Дата: 2017-03-21 15:00.

#### Версия 0.3.5
Добавлен AppContext для совместного использования данных в процессе. Доступ к данным осуществляется через операции HttpContext.AppContext.Get\Set.

Поддерживается загрузка файлов. Возвращается *UploadFile.

Добавлены примеры example\appcontext и example\uploadfile. Дата: 2017-03-21 15:00.

#### Версия 0.3.4
Добавлен Bind для поддержки json, xml, Form данных. Дата: 2017-03-16 11:00.

#### Версия 0.3.3
Добавлен Gzip, включается через app.SetEnabledGzip(true). По умолчанию отключён. Дата: 2017-03-14 13:00.

#### Версия 0.3.2
Реализован модуль Session в режимах runtime и redis. Дата: 2017-03-13 14:00.

#### Версия 0.3.1
Добавлена функция HttpServer.RegisterRoute. Создан каталог example. Дата: 2017-03-09 10:00.

#### Версия 0.3
Добавлена поддержка Hijack. Дата: 2017-01-10 16:00.

#### Версия 0.2
Добавлена поддержка протокола WebSocket. Дата: 2016-11-29 16:00.

#### Версия 0.1.4
Добавлены операции с Cookie в HttpContext: WriteCookie, WriteCookieObj, RemoveCookie, ReadCookie, ReadCookieObj.

Включена оптимизация пула объектов для экономии ресурсов GC. Дата: 2016-11-23 15:00.

#### Версия 0.1.3
Изменён fasthttp на nethttp.

Обновлена версия Go с 1.6 до 1.7.3. Дата: 2016-11-15 16:00.

#### Версия 0.1.2
Поддержка HttpModule, ExceptionHandle, NotFound, Error. Дата: 2016-11-14 15:00.

#### Версия 0.1.1
Расширены методы поддержки в HttpContext. Дата: 2016-11-10 11:00.

#### Версия 0.1
Начальная версия на основе fasthttp. Дата: 2016-11-09 11:00.

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/devfeel-dotweb.git
git@api.gitlife.ru:oschina-mirror/devfeel-dotweb.git
oschina-mirror
devfeel-dotweb
devfeel-dotweb
master