aah framework

一个安全、灵活、快速的 Go web 框架。「A secure, flexible, rapid Go web framework

Github stars Tracking Chart

aah

一个安全、灵活、快速的 Go Web 框架。

访问 aah 的官方网站 https://aahframework.org,了解更多信息。

简介

aah 旨在为构建现代 Web、API 和 WebSocket 应用程序提供必要的组件。aah 框架是安全、快速和可扩展的。它充分考虑到了基础设施、模板代码、重复性活动、可重用组件等。

aah 是一个具有微框架性质的特性丰富的框架。

看看 aah 的 特性,了解使用 aah 的好处,它的文档 非常好。

  • 真正地易于使用和配置驱动。
  • 安全意识框架,安全会话,CSRF 预防,XSS 预防,认证,授权等。
  • 构建强大的终端用户产品并交付使用。
  • 可在模块层面进行扩展。如果没有,那就立即提出问题。
  • 高度可维护,缩短交付时间,随着应用程序的增长而熠熠生辉。
  • 稳步成熟的框架和功能集正在不断增强。

aah 的初始稳定版本 0.5.0 于2017年5月19日发布。

aah 特性

赋予工程和开发能力。

服务器及其扩展

aah 通过服务器提供强大的 OOTB 功能。

  • HTTP, HTTPS (Certs & Let's Encrypt), HTTP/2, UNIX Socket
  • 服务器扩展 - OnInit, OnStart, OnShutdown 等
  • 优雅关机,自动 Gzip 压缩
  • 访问日志,转储请求和响应

路由

原生多租户(域和子域)。

  • 灵活,命名空间/组和反向路由
  • 很好地整合了静态文件的流程和错误处理
  • 对 RESTful APIs 的丰富支持(版本策略、路径参数、自动绑定等)

控制台命令

  • 轻松地将 N 个用户定义的行为作为控制台命令添加到 aah 应用程序二进制中。例如:如命令迁移、安装、卸载等。
  • 能够为应用程序的功能添加 CLI 访问。

配置

aah 配置的语法与 HOCON 的语法非常相似。

  • 组织你的配置文件并使用 include reference
  • 在非设备配置文件上通过 SIGHUP 重新加载应用程序的配置

多环境配置

aah 支持配置文件的概念,这有助于在不同环境下轻松组织配置。

  • 默认情况下,定义了 dev 和 prod 配置文件
  • 定义需要的配置文件并进行组织。例如:QA、Stage1 等。

参数自动解析和绑定

aah 提供了一个非常灵活的方式来自动解析和绑定请求值到合适的 Go 数据类型。

  • 绑定路径、表单、查询到控制器动作参数或结构字段中
  • 将 JSON 或 XML 请求体绑定到结构中
  • 支持按类型绑定(非)指针目标和自定义值解析器

强大的响应功能

天然的 RESTful 或渲染的视图引擎的选择。

  • 视图引擎——增强型 Go,Pug(Jade),[即将推出...] 。
  • 强大的响应生成器——轻松编写响应
  • 响应 HTML、JSON、JSONP、XML、文件、字节等。
  • 天然的 HTML 最小化

支持 SPA 和移动应用

aah 支持独立的前端架构的趋势。

  • 原生 RESTful,默认为无状态
  • 在内容类型和接受上进行内容协商
  • 内置 CORS 支持
  • 强大的安全实现

实时应用程序支持

aah 支持实时应用架构。

  • WebSocket —— 双向的
  • 服务器发送的事件(SSE)—— 单向的[即将到来]

事件处理和调度

aah 提供简单高效的事件发布器,具有异步和同步功能。

  • aah 服务器扩展点是围绕事件发布器建立的
  • 支持一次发布功能

i18n 国际化

aah 提供 i18n 支持,又称消息。语言 ID 是 ISO 639-1,区域 ID 是 ISO 3166-1。

  • 只需配置,应用程序就被国际化/本地化了。
  • 在应用程序的任何地方访问消息
  • 在 i18n 目录下按你想要的方式组织消息文件

日志

aah 提供简单而强大的日志功能,包括字段、子日志。

  • 支持 OOTB 控制台和文件接收器
  • 人类(文本)和机器(JSON)可读的日志格式
  • 支持 Hook 和 drop-in 替换软件包的日志

错误处理

aah 提供结构良好的错误处理,具有灵活和分层的传播流程。

  • 控制器级别的错误处理
  • 应用层面的集中错误处理
  • 框架的默认错误处理

静态文件传输

易于使用的静态文件传输。

  • 送达目录和它的子目录
  • 单个文件和目录列表功能
  • 按每个 MIME 类型的头缓存控制
  • 通过文件名进行简单的缓存破坏

Docker 和 systemd

aah CLI 提供了生成配置文件的命令,用于开发和生产。

  • 对于 docker - Dockerfile.dev 和 Dockerfile.prod(多阶段构建,最小化尺寸)
  • 对于 systemd - <app-name>.service 文件

(特性原文链接:https://aahframework.org/features.html


Overview

Name With Ownergo-aah/aah
Primary LanguageGo
Program languageGo (Language Count: 1)
PlatformLinux, Mac, Windows
License:MIT License
Release Count24
Last Release Namev0.12.5 (Posted on )
First Release Namev0.1 (Posted on )
Created At2016-06-27 04:47:45
Pushed At2023-02-24 23:21:10
Last Commit At2020-03-04 01:03:22
Stargazers Count687
Watchers Count32
Fork Count37
Commits Count1.4k
Has Issues Enabled
Issues Count203
Issue Open Count17
Pull Requests Count68
Pull Requests Open Count2
Pull Requests Close Count4
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

News

  • v0.12.3 released and tagged on Feb 06, 2019.
  • v0.12.2 released and tagged on Dec 13, 2018.
  • v0.12.0 released and tagged on Dec 02, 2018.
  • v0.11.4 released and tagged on Aug 27, 2018.

Stargazers over time

Stargazers over time

Introduction

aah aims to provide necessary components to build modern Web, API and WebSocket applications. aah framework is secure, rapid and extensible. It takes full care of infrastructure, boilerplate code, repetitive activities, reusable components, etc.

Have a look at the aah features to know the benefits of using aah and it is very well documented.

  • Truly easy to use and configuration driven.
  • Security aware framework, secure session, CSRF prevention, XSS prevention, authentication, authorization, etc.
  • Build powerful end-user product and ship it.
  • Extensible at module level. If not, then immediately raise an issue.
  • Highly maintainable, reduced delivery time, shines with application growth.
  • Steadily maturing framework and the feature-sets are getting enhanced release by release.
To the top