精华内容
下载资源
问答
  • golang框架

    2019-09-26 02:19:44
    自推出以来,Google的Go编程语言(Golang)越来越受主流用户的欢迎。在2016年12月的一份调研中,3,595名受访者中有89%表明他们在工作中或工作以外用Go语言编程。 此外,在编程语言中,Go语言在专业知识和偏好方面...

    来自:码农网,译者:小峰

    链接:www.codeceo.com/article/golang-framework-ide-tools.html

    自推出以来,Google的Go编程语言(Golang)越来越受主流用户的欢迎。在2016年12月的一份调研中,3,595名受访者中有89%表明他们在工作中或工作以外用Go语言编程。

    此外,在编程语言中,Go语言在专业知识和偏好方面排名最高。2017年7月,在Tiobe的年度编程语言排名中,Go语言从去年的第55名一跃跳到了第10名。

    显然,Go语言吸引了来自不同学科的许多程序员和软件开发外包专业人士。可以这么说,这全都是因为Go语言的易用性。

    作为一种编译型的开源编程语言,Go语言能使开发人员轻松构建简单可靠又高效的软件。它是更保守的语言,如C和C ++的创新和演变的产物。

    使用Go语言,可以减少代码输入量,并且编写稳健的API而不牺牲性能变得更加容易。 Go语言旨在实现可扩展性和并发性,从而实现优化。编译器可以在运行时前执行所有代码检查工作。

    我们收罗了Golang的顶级框架、IDE和工具列表,以供大家快速参考。建议添加到浏览器书签中,以便随时查看!

    Golang框架

    Web框架可以帮助开发人员尽可能方便快捷地构建应用程序。Go语言还比较新,所以使用的框架带有充足的文档很重要。

    这里有9个框架可帮助你使用Go语言构建项目。

    1、Revel

    作为Go语言的高效生产力框架,Revel包含的Hot Code Reload工具可以让你在每次更改文件时重建项目。它还包括各种全面和高性能的功能,因此你不需要找外部库集成到框架中。

    2、Beego

    Beego是一个完整的MVC框架,有自己的日志库、ORM和Web框架。你不需要再去安装第三方库。它有一个称为Bee Tool的内置工具,用于监视代码更改,并在检测到更改时运行任务。

    Beego可以为你节省很多时间,特别是在项目一开始,你要弄清楚日志框架或应用程序结构的时候。

    3、Martini

    受Sinatra启发,Martini是一个极其轻巧但功能强大的框架。它被开发用于用Golang编写模块化Web应用程序和服务。

    它的特点是非侵入式设计,快速易用,且包括各种处理程序和中间件。它能够为HTML5模式的AngularJS应用程序执行基本路由,异常处理和默认文档服务。

    Martini的最佳功能是可以使用反射,它允许开发人员动态地将数据插入到处理函数中并添加新的服务。Martini也完全兼容http.HandlerFunc界面。不过,缺点在于Martini框架不再维护了。

    4、Gin Gonic

    Gin Gonic是一个Web框架,有类似Martini的API,但性能更好。如果你以前使用过Martini,那么你也一定熟悉Gin Gonic。没用过Martini也没关系,只需要学习10分钟就能掌握Gin。就是这么容易!

    Gin Gonic是一个极简化的框架,仅包含最重要的库和功能。这使得它非常适合开发高性能REST API。此外,它比Martini快四十倍。

    你可以添加中间件、嵌套组、JSON验证以及渲染,并依然保持其最佳性能。Gin Gonic使用httprouter,Go语言最快的HTTP路由器。

    5、Buffalo

    要构建Go语言新的Web应用程序,使用Buffalo是一个快速又简单的方法。当你开始一个新项目时,Buffalo可以为你提供一切——从前端到后端开发。

    它具有热重载功能,这意味着dev命令将自动查看.go和.html文件。然后,它将为你重建并重启二进制文件。运行dev命令,你就能看到变化在你的眼前发生!

    Buffalo不仅仅是一个框架——它也是一个整体的Web开发生态系统,可以让你直接构建应用程序。

    6、Goji

    Goji是一个轻量级的快速Web框架,将可组合性和简单性作为其主要优先级。很像net / http.ServeMux,Goji是一个极简的HTTP请求复用器。它包括Einhorn支持,允许在Goji中提供Websocket支持。

    其他功能包括URL模式,可重新配置的中间件堆栈,正常关机等。Goji可以用于生产,并在若干组织中提供了数以亿计个请求。

    7、Tiger Tonic

    受Dropwizard启发,Tiger Tonic是开发JSON Web服务和构建高性能REST API的Go框架。为了忠于Golang的原则,Tiger Tonic努力保持正交特性。

    Tiger Tonic的缺点在于构建大型后端应用程序尚有不足之处。

    8、Gocraft

    这是又一个强大而简约的框架,Gocraft提供快速和可扩展的路由性能。它将路由添加来自标准库的net / http包中。

    Gocraft是一个Go mux和中间件软件包,具有强大的投射和反射能力,可以静态输入代码。你还可以使用内置中间件添加可选功能或者自己编写。

    由于性能始终是开发人员最关心的问题之一,所以Gocraft是开发人员的绝佳选择。而且使用Gocraft框架编写后端Web应用程序很容易。

    9、Mango

    虽然Mango没有得到创作者Paul Bellamy的积极维护,但Go语言的许多用户仍然在使用它。Mango的优势在于它的模块化。你可以从各种库中选择,以包含在你的项目中。

    Mango让你可以尽可能快速又轻松地构建可重复使用的HTTP功能模块。它将一系列中间件和应用程序编译成单个HTTP服务器对象,以保持代码独立。

    Golang的集成开发环境(IDE)

    Golang的IDE随着Go语言的普及越来越受大家的欢迎。虽然还是有许多开发人员仍然喜欢使用文本编辑器,但也有很多开发人员更倾向于使用IDE。

    如果你正工作于具有广泛代码库的大型项目,那么IDE可以帮助你轻松组织代码和导航。此外,IDE可以帮助你测试代码并相应地编辑。

    以下是用Golang工作良好的顶尖IDE。

    1、Gogland

    软件开发公司JetBrains发布了另一个可靠的IDE,这次是针对Golang发布的。Gogland是一个商业IDE,为Go开发人员提供了一个强大的人机工程学环境。它还具有编码协助、调试器和集成终端的功能。

    由于Gogland是由一家已成立的公司创建的,所以它拥有广泛的IntelliJ插件生态系统,让你可以在需要更多工具的时候获得更多。

    2、Visual Studio Code

    由Microsoft创建的Visual Studio Code是一个功能齐全的开源IDE和代码编辑器,支持各种各样的编程语言。它的特点是智能完成;使用断点调用、调用堆栈和交互式控制台调试;内置Git集成;以及分层文件夹和文件浏览器。

    作为另一个流行的IDE,Visual Studio Code有一个Go开发人员定期贡献的支持社区。使用Visual Studio Code,你可以使用可用插件数组来扩展功能。

    3、LiteIDE

    LiteIDE是五年多前创建的首个以Golang为中心的开源IDE。作为具有独特外观的C ++ Qt应用程序,LiteIDE提供代码管理、可配置构建命令、gdb和Delve调试器,使用WordApi——基于MIME类型的系统——自动完成和创建等等。它还提供JSON和Golang支持。

    4、Wide

    Wide是Golang程序员使用的基于Web的IDE。它专为协作开发而设计,适用于团队和Web开发机构。Wide功能包括代码高亮、调试、Git集成等。

    因为Wide是由一名中国开发者创建和维护的,所以其大部分文档和支持是中文的。

    5、带有Go-Plus插件的Atom

    如果你已经在使用Atom,那么你可以通过一个名为go-plus的开源软件包来改善Golang语言的代码编辑体验。使用go-plus,你可以立即获得关于语法和构建错误的实时反馈。

    Go-plus软件包提供了几乎所有Atom中对Golang的支持。它还可以用于工具,构建流程,linters,vet和coverage工具。

    Go-plus还包括各种代码片段和功能,如gocode的自动完成,gofmt、goreturns或goimports等的代码格式化。

    6、带有GoClipse的Eclipse

    由于Eclipse是广受欢迎的IDE,因此我们为其创建了许多插件。GoClipse是针对Golang的Eclipse插件,提供Go源代码编辑,具有可配置的语法高亮和自动缩进以及大括号完成功能。

    GoClipse还可以作为项目向导和构建器来立即报告语法和构建错误。GoClipse的其他功能包括调试功能和代码辅助。

    7、带有GoSublime的Sublime Text

    Sublime Text也是一个复杂的文本编辑器,具有大量的贡献者和开发者社区。因此,开发者为此IDE创建了各种各样的插件。

    GoSublime是Sublime Text 3针对Golang的插件,在你编写代码时,提供来自Gocode的代码完成,lint /语法检查,自动添加和删除程序包导入,等等。

    8、带有Vim-Go插件的Vim

    Vim是一个免费的开源IDE,可以定制和配置各种插件。如果你是Golang程序员,那么你可以使用Vim中由Fatih Arslan创建的vim-go插件。Vim-go自动安装所有必需的二进制文件,为Golang提供平滑的Vim集成。

    Vim-go是一款功能强大的插件套件,用于撰写和开发Go。其功能包括高级源代码分析,添加和删除导入路径,多次第三方支持,goto定义,快速文件执行等等。

    Vim-go是高度可定制的,可以根据你的需要启用或禁用各种功能。

    9、Komodo

    Komodo是一个全功能的Go语言IDE,并且支持如Node.js,Python,Ruby,Perl等其他编程语言。使用这个Go IDE,你可以轻松地编写干净的代码。其功能包括高级代码编辑器,智能代码完成,语法检查,版本控制和单元测试,以及允许代码浏览和代码提示的Go Code Intelligence。

    Komodo的优点是,它可以很好地协助团队合作,因为允许多个开发人员同时编辑文档。只要一个许可证,Komodo就可以安装在Mac,Windows或Linux上。

    10、带有Go语言(golang.org)支持插件的IntelliJ IDEA

    IntelliJ IDEA(由JetBrains公司开发)是可以通过Go语言支持插件从而使用Golang的IDE。如果你想要在IntelliJ IDEA中使用Golang,那么你需要安装此插件,虽然不同于Gogland,它的功能有限。

    Golang工具

    Golang工具可用于各种项目和Web应用程序。使用这些有用的工具可以帮助开发人员尽可能快速而轻松地编写代码并构建应用程序。

    这里有一系列顶级的Golang工具以供参考。

    1、Apicompat

    Apicompat是一种新的Go语言工具,可帮助开发人员检测向后不兼容的更改和导出的声明。

    你可以通过Apicompat避免误报。但是,Apicompat并不能检测到每个向后不兼容的变化。并且,库作者没有考虑到交换参数和其他更改的需要。

    2、Checkstyle

    受Java Checkstyle启发,针对Golang的Checkstyle输出编码风格的建议。它还允许开发人员检查文件行/函数和行/参数号,然后由用户进行配置。

    3、Depth

    又一个有用的Golang工具,Depth可帮助Web开发人员检索和可视化Go源代码依赖关系树。它可以用作独立的命令行应用程序或作为项目中的特定包。你可以通过在解析之前在Tree上设置相应的标志来添加自定义。

    4、Go-Swagger

    该工具包包括各种功能和功能。Go-Swagger是Swagger 2.0的一个实现,可以序列化和反序列化swagger规范。它是RESTful API简约但强大的代表。

    通过Go-Swagger,你可以swagger规范文档,验证JSON模式以及其他额外的规则。其他功能包括代码生成,基于swagger规范的API生成,基于代码的规范文档生成,扩展了的字符串格式,等等。

    5、Go Meta Linter

    如果你需要运行Go lint工具并同时使其输出正常化,那么Go Meta Linter可以为你办到。Go Meta Linter旨在与文本编辑器或IDE集成,如如Sublime Linter插件,Atom go-plus包,Emacs Flycheck检查器,Vim / Neovim,以及Go for Visual Studio Code一起使用。它还支持各种各样的linter和配置文件,如JSON。

    6、Go-callvis

    Go-callvis是一个Web开发工具,允许你使用Graphviz的点格式可视化Go程序的调用图。此工具在构建具有复杂代码库的大型项目时特别有用。它在你想要了解另一个开发人员的代码结构或重建别人的项目时,也很有用。

    通过go-callvis,开发人员可以在程序中关注特定包;根据软件包的分组函数和根据类型的方法;以及将软件包限制到自定义路径前缀,并忽略那些包含它们的自定义前缀。

    7、Gonative

    Gonative是一个简单的Golang工具,让你能够使用本机库构建Go工具链,而这可以在使用stdlib软件包的Cgo-enabled版本时进行交叉编译。

    Gonative为每个平台下载二进制发行版,并将它们的库复制到正确的位置。同时,Gonative设置正确的mod时间,以避免不必要的重建。

    不幸的是,Gonative在Windows上仍然未经测试。此外,也没有提供Linux / arm支持。

    8、Grapes

    Grapes是一种轻量级的Golang工具,旨在轻松地通过SSH分发命令。它由Yaron Sumel编写和积极维护。

    Grapes不久将支持完整的主机密钥验证,这是开发人员应该注意到的。

    9、Gosimple

    Golang linter的伟大之处在于它专注于简化Go源代码。Gosimple始终将最新的Go版本作为目标,因此它需要Go 1.6或更高版本。

    如果有新的Go版本,gosimple会建议最轻松和最简单的方法来避免复杂的构造。

    10、Go Vendor

    Go Vendor是与标准Vendor文件夹兼容的Golang工具。它允许开发人员通过govendor add / update从$GOPATH中复制现有的依赖关系。你还可以通过govendor fetch直接提取新的依赖关系或更新现有的依赖关系,以及使用govendor迁移来移动旧的系统。

    转载于:https://www.cnblogs.com/jackey2015/p/11576242.html

    展开全文
  • Golang框架

    2019-03-04 08:08:41
    Web框架可以帮助开发人员尽可能方便快捷地构建应用程序。Go语言还比较新,所以使用的框架带有充足的文档很重要。这里有9个框架可帮助你使用Go语言构建项目。 1.Revel 作为Go语言的高效生产力框架,Revel包含的Hot ...

    Web框架可以帮助开发人员尽可能方便快捷地构建应用程序。Go语言还比较新,所以使用的框架带有充足的文档很重要。这里有9个框架可帮助你使用Go语言构建项目。

    1.Revel

    作为Go语言的高效生产力框架,Revel包含的Hot Code Reload工具可以让你在每次更改文件时重建项目。它还包括各种全面和高性能的功能,因此你不需要找外部库集成到框架中。

    2.Beego

    Beego是一个完整的MVC框架,有自己的日志库、ORM和Web框架。你不需要再去安装第三方库。它有一个称为Bee Tool的内置工具,用于监视代码更改,并在检测到更改时运行任务。

    Beego可以为你节省很多时间,特别是在项目一开始,你要弄清楚日志框架或应用程序结构的时候。

    3.Martini

    受Sinatra启发,Martini是一个极其轻巧但功能强大的框架。它被开发用于用Golang编写模块化Web应用程序和服务。

    它的特点是非侵入式设计,快速易用,且包括各种处理程序和中间件。它能够为HTML5模式的AngularJS应用程序执行基本路由,异常处理和默认文档服务。

    Martini的最佳功能是可以使用反射,它允许开发人员动态地将数据插入到处理函数中并添加新的服务。Martini也完全兼容http.HandlerFunc界面。不过,缺点在于Martini框架不再维护了。

    4.Gin Gonic

    Gin Gonic是一个Web框架,有类似Martini的API,但性能更好。如果你以前使用过Martini,那么你也一定熟悉Gin Gonic。没用过Martini也没关系,只需要学习10分钟就能掌握Gin。就是这么容易!

    Gin Gonic是一个极简化的框架,仅包含最重要的库和功能。这使得它非常适合开发高性能REST API。此外,它比Martini快四十倍。

    你可以添加中间件、嵌套组、JSON验证以及渲染,并依然保持其最佳性能。Gin Gonic使用httprouter,Go语言最快的HTTP路由器。

    5.Buffalo

    要构建Go语言新的Web应用程序,使用Buffalo是一个快速又简单的方法。当你开始一个新项目时,Buffalo可以为你提供一切——从前端到后端开发。

    它具有热重载功能,这意味着dev命令将自动查看.go和.html文件。然后,它将为你重建并重启二进制文件。运行dev命令,你就能看到变化在你的眼前发生!

    Buffalo不仅仅是一个框架——它也是一个整体的Web开发生态系统,可以让你直接构建应用程序。

    6.Goji

    Goji是一个轻量级的快速Web框架,将可组合性和简单性作为其主要优先级。很像net / http.ServeMux,Goji是一个极简的HTTP请求复用器。它包括Einhorn支持,允许在Goji中提供Websocket支持。

    其他功能包括URL模式,可重新配置的中间件堆栈,正常关机等。Goji可以用于生产,并在若干组织中提供了数以亿计个请求。

    7.Tiger Tonic

    受Dropwizard启发,Tiger Tonic是开发JSON Web服务和构建高性能REST API的Go框架。为了忠于Golang的原则,Tiger Tonic努力保持正交特性。

    Tiger Tonic的缺点在于构建大型后端应用程序尚有不足之处。

    8. Gocraft

    这是又一个强大而简约的框架,Gocraft提供快速和可扩展的路由性能。它将路由添加来自标准库的net / http包中。

    Gocraft是一个Go mux和中间件软件包,具有强大的投射和反射能力,可以静态输入代码。你还可以使用内置中间件添加可选功能或者自己编写。

    由于性能始终是开发人员最关心的问题之一,所以Gocraft是开发人员的绝佳选择。而且使用Gocraft框架编写后端Web应用程序很容易。

    9.Mango

    虽然Mango没有得到创作者Paul Bellamy的积极维护,但Go语言的许多用户仍然在使用它。Mango的优势在于它的模块化。你可以从各种库中选择,以包含在你的项目中。

    Mango让你可以尽可能快速又轻松地构建可重复使用的HTTP功能模块。它将一系列中间件和应用程序编译成单个HTTP服务器对象,以保持代码独立。

    展开全文
  • Golang 框架

    2019-03-19 17:22:52
    安装go web框架httprouter go get github.com/julienschmidt/httprouter —————————————————————————————— https://github.com/go-sql-driver/mysql 安装go mysql数据库框架...

    https://github.com/julienschmidt/httprouter

    安装go web框架httprouter

    go get github.com/julienschmidt/httprouter  

    ——————————————————————————————

    https://github.com/go-sql-driver/mysql

    安装go mysql数据库框架

    go get  github.com/go-sql-driver/mysq

     

    ——————————————————————————————

    websocket框架 github.com/gorilla/websocket

    go get  github.com/gorilla/websocket

    import "github.com/gorilla/websocket" // 常用的websocket包

    ——————————————————————————————

    gin web框架 

    import "github.com/gin-gonic/gin"

    ——————————————————————————————

    配置文件获得  viper

    go get github.com/spf13/viper

    如果提示找不到golang.org/x/text/这个库,是因为golang.org/x/text/这个库在GitHub上托管的路径不一致。

           解决办法:

           可以从https://github.com/golang/text下载源码下来,然后到$GOPATH/src下面创建【golang.org/x】 文件夹(已存在的忽略),把压缩包的文件解压到【golang.org/x/】文件夹之下。

           然后执行  go install -x  golang.org/x/text  即可解决。

     

    import "github.com/spf13/viper"

     

    展开全文
  • Go-简单实用golang框架

    2019-08-13 18:56:44
    简单实用golang框架
  • IRIS 验证与授权认证类型HTTP Basic AuthHTTP Basic Auth简单点说明就是每次请求时都提供用户用户名和密码,把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。 因此,在开发对外开放的RESTful ...

    298da0ed2e05699d6b117264c99a5256.png

    IRIS 验证与授权

    认证类型

    HTTP Basic Auth

    HTTP Basic Auth简单点说明就是每次请求时都提供用户用户名和密码,把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。 因此,在开发对外开放的RESTful API时,尽量避免采用HTTP Basic Auth

    OAUth2

    OAuth(开放授权)是一个开放的授权标准,允许用户让第三方应用访问该用户在某一web服务上存储的私密的资源(如照片,视频,联系人列表), 而无需将用户名和密码提供给第三方应用。

    OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的第三方系统(例如,视频编辑网站) 在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth让用户可以授权第三方网站访问他们存储 在另外服务提供者的某些特定信息,而非所有内容

    Cookie+session

    HTTP是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证, 不过下回这个客户端再发送请求时候,还得再验证一下。

    Session,我们需要在服务端存储为登录的用户生成的Session,这些 Session可能会存储在内存,磁盘,或者数据库里。我们可能需要在服务端 定期的去清理过期的Session

    当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的ID号发送给客户端, 客户端收到以后把这个ID号存储在Cookie里,下次这个用户再向服务端发送请求的时候,可以带着这个Cookie,这样服务端会验证一个这个 Cookie里的信息,看看能不能在服务端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。

    JWT

    JSON Web TokenJWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。一个JWT实际上就是一个 字符串,它由三部分组成,头部、载荷与签名。

    HTTP BASIC认证

    BASIC认证概述

    HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份证的方法,当一个客户端向HTTP服务 器进行数据请求时, 如果客户端未被认证,则HTTP服务器将通过基本认证过程对客户端的用户名及密码进行验证,以决定用户是否合法。客户端在接收到HTTP服务器的身份认证要求后, 会提示用户输入用户名及密码,然后将用户名及密码以BASE64加密,加密后的密文将附加于请求信息中, 如当用户名为:iris,密码为:123456时, 客户端将用户名和密码用:合并,并将合并后的字符串用BASE64加密为密文,并于每次请求数据 时,将密文附加于请求头(Request Header)中。 HTTP服务器在每次收到请求包后,根据协议取得客户端附加的用户信息(BASE64加密的用户名和密码),解开请求包,对用户名及密码进行验证, 如果用 户名及密码正确,则根据客户端请求,返回客户端所需要的数据;否则,返回错误代码或重新要求客户端提供用户名及密码。

    BASIC认证的过程

    • 客户端向服务器请求数据,请求的内容可能是一个网页或者是一个其它的MIME类型,此时,假设客户端尚未被验证,则客户端提供如下请求至服务器:

    ```go Get /index.html HTTP/1.0

    Host:www.studyiris.com

    ```

    • 服务器向客户端发送验证请求代码401,服务器返回的数据:

    go HTTP/1.0 401 Unauthorised Server: nginx/1.0 WWW-Authenticate: Basic realm="studyiris.com" Content-Type: text/html Content-Length: xxx

    • 当符合http1.01.1规范的客户端浏览器收到401返回值时,将自动弹出一个登录窗口,要求用户输入用户名和密码
    • 用户输入用户名和密码后,将用户名及密码以BASE64加密方式加密,并将密文放入前一条请求信息中,则客户端发送的第一条请求信息则变成如下内容:

    go Get /index.html HTTP/1.0 Host:www.studyiris.com Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxx //加密串

    • 服务器收到上述请求信息后,将Authorization字段后的用户信息取出、解密,将解密后的用户名及密码与用户数据库进行比较验证, 如用户名及密码正确,服务器则根据请求,将所请求资源发送给客户端

    BASIC认证缺点

    HTTP基本认证的目标是提供简单的用户验证功能,其认证过程简单明了,适合于对安全性要求不高的系统或设备中,如大家所用路由器的配置页面的认证, 几乎 都采取了这种方式。其缺点是没有灵活可靠的认证策略,如无法提供域(domainrealm)认证功能,另外,BASE64的加密强度非常低。 当然,HTTP基本认证系统也可以其他加密技术一起,实现安全性能较高(相对)的认证系统

    目录结构

    主目录basicauth
    —— main.go
        —— main_test.go

    代码示例

    main.go
    package main
    
    import (
        "time"
        "github.com/kataras/iris"
        "github.com/kataras/iris/middleware/basicauth"
    )
    
    func newApp() *iris.Application {
        app := iris.New()
        authConfig := basicauth.Config{
            Users:   map[string]string{"myusername": "mypassword", "mySecondusername": "mySecondpassword"},
            Realm:   "Authorization Required", // 默认表示域 "Authorization Required"
            Expires: time.Duration(30) * time.Minute,
        }
        authentication := basicauth.New(authConfig)
        //作用范围 全局 app.Use(authentication) 或者 (app.UseGlobal 在Run之前)
        //作用范围 单个路由 app.Get("/mysecret", authentication, h)
        app.Get("/", func(ctx iris.Context) { ctx.Redirect("/admin") })
        //作用范围  Party
        needAuth := app.Party("/admin", authentication)
        {
            //http://localhost:8080/admin
            needAuth.Get("/", h)
            // http://localhost:8080/admin/profile
            needAuth.Get("/profile", h)
            // http://localhost:8080/admin/settings
            needAuth.Get("/settings", h)
        }
        return app
    }
    
    func main() {
        app := newApp()
        // open http://localhost:8080/admin
        app.Run(iris.Addr(":8080"))
    }
    
    func h(ctx iris.Context) {
        username, password, _ := ctx.Request().BasicAuth()
        //第三个参数因为中间件所以不需要判断其值,否则不会执行此处理程序
        ctx.Writef("%s %s:%s", ctx.Path(), username, password)
    }
    
    文件名称main_test.go
    package main
    
    import (
        "testing"
        "github.com/kataras/iris/httptest"
    )
    
    func TestBasicAuth(t *testing.T) {
        app := newApp()
        e := httptest.New(t, app)
        // redirects to /admin without basic auth
        e.GET("/").Expect().Status(httptest.StatusUnauthorized)
        // without basic auth
        e.GET("/admin").Expect().Status(httptest.StatusUnauthorized)
        // with valid basic auth
        e.GET("/admin").WithBasicAuth("myusername", "mypassword").Expect().
            Status(httptest.StatusOK).Body().Equal("/admin myusername:mypassword")
        e.GET("/admin/profile").WithBasicAuth("myusername", "mypassword").Expect().
            Status(httptest.StatusOK).Body().Equal("/admin/profile myusername:mypassword")
        e.GET("/admin/settings").WithBasicAuth("myusername", "mypassword").Expect().
            Status(httptest.StatusOK).Body().Equal("/admin/settings myusername:mypassword")
        // with invalid basic auth
        e.GET("/admin/settings").WithBasicAuth("invalidusername", "invalidpassword").
            Expect().Status(httptest.StatusUnauthorized)
    }
    

    提示

    1. 运行上面的代码,访问http://localhost:8080/admin
    2. 未验证时候会弹出一个验证框,让你输入用户名与密码,请认真看弹出框上面的内容
    3. 细心的朋友会发现过期时间设置不起作用,因为还需要设置一个expirEnbaletrue
    展开全文
  • gopoh:Golang框架Tidak Jelas,呵呵呵
  • Golang指南:顶级Golang框架、IDE和工具列表 https://www.itcodemonkey.com/article/1053.html 2017-10-30 17:21:58 分类:人工智能与大数据标签:Go语言 来自:码农网,英文原文,译者:小峰 自推出以来,...
  • Iris框架1.1 Golang框架1.2 安装Iris2. 使用Iris构建服务端2.1 简单例子1——直接返回消息2.2 简单例子2——使用HTML模板2.3 路由处理2.4 使用中间件2.5 使用文件记录日志2.6 参数设置 1. Iris框架 1.1 Golang框架 ...
  • 51Reboot 运维开发Golang 课程1.18开课K8S 课程Python 自动化进阶课程Python 基础实战课程运维前端课程课程试听预约请扫码>>>出处:https://url.cn/5L0tM19golang 原生 http 库已经可以很方便地实现一个 ...
  • 简单易用又强大的微服务golang框架。 特性 http,websocket服务 丰富的中间件:请求日志,JWT认证,跨域,恢复,一系列转换 ,Redis,Mysql等 配置项 参数验证器 curl组件 昂首阔步 安装 go get -u github....
  • 基于 golang框架的博客引擎。 预览 建造 基于Docker构建,您必须已安装Docker。 然后跑 ./pack.sh 执行完成后,释放目录位置:gblog-release。 包括Windows,Linux,Mac的32位和64位。 跑 打包后,只需运行: cd ...
  • IRIS 验证与授权认证类型HTTP Basic AuthHTTP Basic Auth简单点说明就是每次请求时都提供用户用户名和密码,把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。 因此,在开发对外开放的RESTful ...
  • 代码地址crazyStrome/injector​github.cominjector这是一个依赖注入的库 2020.10.13:目前实现了基本数据类型和*struct的依赖注入,只有singletonContainer// beans already created and populated ...
  • 随着微服务的持续火热,越来越多的公司热衷于前后端分离,于是我们在日常的开发工作中,经常...这里所写的是关于golang语言下的echo框架和swagger运用起来。swagger是什么?1、是一款让你更好的书写API文档的规范且...
  • golang 数据库框架 我已经将Go投入生产已经有一段时间了,非常享受它的快速和可靠。 较小的构建体大小,go例程提供的并发性以及您可以直接在机器上运行构建体的事实使Golang变得非常可爱。 标准软件包的性能如此之...
  • 欢迎关注我的头条号:Wooola,专注于Java、Golang、微服务架构,致力于每天分享原创文章、快乐编码和开源技术。前言之前学习过原生的Go连接MYSQL的方法,使用Go自带的"database/sql"数据库连接api,"github....
  • 背景: 之前使用Golang的Gin框架进行一些运维内部后端的API接口开发,对外提供提供json类型的数据响应,但是该种方式在浏览器访问数据时数据格式不友好(由于是API接口,一般需要使用postman之类的工具来验证接口返回...
  • 介绍Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。如果你需要极好的性能,使用 Gin 吧。安装框架配置好GOPATH,建议...
  • Golang框架简述

    2020-02-12 08:22:45
    iris 速度最快 MVC 丰富的中间件生态
  • 本文目的本文旨在向大家简单的介绍Gin框架。如需详细了解,可查看个人主页,有成套视频讲解。Gin框架第一讲Gin框架Gin是Go的微框架,封装比较优雅,API友好,源码注释比较明确,版本稳定。具有快速灵活,容错方便等...
  • golang 框架 之 CHI

    2018-11-09 20:32:00
    golang 的 http框架已经有很多,究其原因:go 的net/http 已经做了大部分工作,封装一个框架的工作量,没有那么的大。 不过呢,林子大了鸟也就多了,部分框架的代码质量实在不敢恭维,另有一些框架则绑定了一堆东西,...
  • 前言:gorm是Golang语言中一款性能极好的ORM库,对开发人员相对是比较友好的。当然还有另外一个xorm库也是比较出名的,感兴趣的也可以看看这个库,接下来主要介绍下gorm库的一些基本使用。GORM介绍和快速入门功能概览...
  • 这篇文章是搬运自我的个人blog:MashiroC的奇思妙想最近闲来无事,捣鼓了一下Golang的Web框架。这一篇文章主要是梳理一下Web框架的执行逻辑,真正开始上手撸代码和踩坑要到下一篇。因为是Java选手,刚开始学Go不久,...
  • Gin是用Golang开发的一个微框架,类似Martinier的API,重点是小巧、易用、性能好很多,也因为 httprouter 的性能提高了40倍。准备环节一、安装Golang首先,根据对应的操作系统选择安装包下载,在这里我使用的是...
  • 1.1 gRPC介绍gRPC是由Google公司开源的一款高性能的远程过程调用(RPC)框架,可以在任何环境下运行。该框架提供了负载均衡,跟踪,智能监控,身份验证等功能,可以实现系统间的高效连接。另外,在分布式系统中,gRPC...
  • golang框架Revel介绍

    千次阅读 2018-08-16 17:25:32
    http://www.gorevel.cn/docs/index.html
  • 用于Golang的高效HTTP中间件框架,使Web应用程序和API像Koa.js一样易于编写。 Koa的中间件堆栈以类似堆栈的方式流动,允许您在下游执行操作,然后在上游过滤和处理响应。 Koa未与任何中间件捆绑在一起。 安装 $ ...
  • Go-Spring 项目简介Go-Spring 是模仿 Java 的 Spring 全家桶实现的一套 GoLang 的应用程序框架,遵循“习惯优于配置”的原则,提供了依赖注入、自动配置、开箱即用、丰富的第三方类库集成等功能,能够让程序员少写很...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,418
精华内容 1,767
关键字:

golang框架