Golang最快的Web框架

一、概述

Fiber是在Go最快的HTTP引擎Fasthttp之上构建的Go web框架。它的设计目的是在考虑到零内存分配和性能的情况下简化快速开发。它的特性:

  • 稳健的路由
  • 提供静态文件
  • 极致性能
  • 内存占用空间低
  • API终点
  • 中间件和Next支持
  • 快速服务器端编程
  • 模板引擎
  • WebSocket支持
  • Socket.io支持
  • 服务器发送的事件
  • 速率限制器

Fiber的灵感来源于互联网上最流行的web框架Express。我们结合了Express的易用性和Go的原始性能。如果您曾经在Node.js中实现过web应用程序(使用Express或类似工具),那么许多方法和原理对您来说都是非常常见的。
使用Fiber注意事项,由于Fiber使用了unsafe,库可能并不总是与最新的Go版本兼容。Fiber3.0.0已通过Go版本1.21和1.22的测试。Fiber v3还在开发中,对于生产使用还不稳定,推荐选择Fiber v2。如果你想尝鲜,可以选择Fiber v3。Fiber与net/http接口不兼容,这意味着你将无法使用像gqlgen、go swagger或任何其他属于net/http生态系统的项目。

二、Hello World演示项目


package mainimport ("log""github.com/gofiber/fiber/v3"
)func main() {// Initialize a new Fiber appapp := fiber.New()// Define a route for the GET method on the root path '/'app.Get("/", func(c fiber.Ctx) error {// Send a string response to the clientreturn c.SendString("Hello, World 👋!")})// Start the server on port 3000log.Fatal(app.Listen(":3000"))
}

三、路由的写法

func main() {app := fiber.New()// GET /api/registerapp.Get("/api/*", func(c fiber.Ctx) error {msg := fmt.Sprintf("✋ %s", c.Params("*"))return c.SendString(msg) // => ✋ register})// GET /flights/LAX-SFOapp.Get("/flights/:from-:to", func(c fiber.Ctx) error {msg := fmt.Sprintf("💸 From: %s, To: %s", c.Params("from"), c.Params("to"))return c.SendString(msg) // => 💸 From: LAX, To: SFO})// GET /dictionary.txtapp.Get("/:file.:ext", func(c fiber.Ctx) error {msg := fmt.Sprintf("📃 %s.%s", c.Params("file"), c.Params("ext"))return c.SendString(msg) // => 📃 dictionary.txt})// GET /john/75app.Get("/:name/:age/:gender?", func(c fiber.Ctx) error {msg := fmt.Sprintf("👴 %s is %s years old", c.Params("name"), c.Params("age"))return c.SendString(msg) // => 👴 john is 75 years old})// GET /johnapp.Get("/:name", func(c fiber.Ctx) error {msg := fmt.Sprintf("Hello, %s 👋!", c.Params("name"))return c.SendString(msg) // => Hello john 👋!})log.Fatal(app.Listen(":3000"))
}

Fiber是一个不错的Go Web框架,它有完善的文档,丰富的功能,极高的性能。
Github地址: https://github.com/gofiber/fiber

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次kafkakerberos认证问题

1,报错信息 排查思路:检查kerberos配置文件 kerberos.kafka.principalkafka/huawe_baseSECURITY.COM kerberos.kafka.keytabPath/etc/huawe_base.keytab kerberos.kafka.krb5ConfPath/etc/krb5.conf但是查看kafka_client_jass.conf文件,发现…

网络基础-TCP/IP和OSI协议模型

一、OSI和TCP/IP模型 二、OSI七层模型 三、TCP/IP模型 参考:https://www.cnblogs.com/f-ck-need-u/p/7623252.html

由于bug发现的现象

//********************************* 示例1 ******************************* $flag (float)2; var_dump($flag); if ($flag 2) { } var_dump($flag);//输出结果 float(2) int(2)//********************************* 示例2 ******************************* $flag (floa…

关联规则挖掘(二)

目录 三、FP-增长算法(一)算法的背景(二)构造FP-树(三)生成频繁项集 四、关联规则的评价(一)支持度和置信度的不足(二)相关性分析 三、FP-增长算法 &#xf…

.NET 发布,部署和运行应用程序

.NET应用发布 发布.Net应用有很多种方式,下面列举三种发布方式: 单文件发布跨平台发布Docker发布 单文件发布 右键工程,选择“发布”,部署模式选择“独立”,目标运行时选择自己想要部署到的系统,我这里用…

问题:react函数中的state是上一次的值

场景 有一个聊天输入框组件,输入框上面有表情包组件。 通过redux创建了store,存储一个message的状态,用于表情包和输入框共享状态。 输入框通过设置value和onClick做了一个简单双向绑定,其中value的值为store里的message。 impor…

ChatGPT写作术:高效撰写顶级论文

ChatGPT无限次数:点击直达 ChatGPT写作术:高效撰写顶级论文 在当今信息爆炸的时代,如何撰写出高质量的论文成为许多研究者和学生的重要课题。借助人工智能技术的不断发展,像ChatGPT这样的语言生成模型能够为撰写论文提供有效的帮助。本文将介…

【Java框架】Spring框架(三)——Spring整合Mybatis及Spring声明式事务

目录 回顾Mybatis和新对象思路整理 Spring和MyBatis的整合步骤1. 创建Web工程,导入Spring和MyBatis的相关依赖2. 建立开发目录结构,创建实体类3. 创建数据访问接口和SQL映射语句文件4. 使用Spring配置文件配置数据源4.1 database.properties4.2spring配置…

全国产化无风扇嵌入式车载电脑在救护车远端诊断的行业应用

救护车远端诊断的行业应用 背景介绍 更加快速的为急症病人在第一时间开始进行诊断和治疗,是提高病人救助成功率的关键。因此,先进的救护系统正在思考,如何在病人进入救护车之后,立刻能够将救护车中各种检查仪器的信息快速的传回医院&#xf…

aws云靶场和一些杂记

aws靶场 在AWS靶场中,存在三个安全问题:1) 一个S3存储桶政策配置错误,允许公共访问,通过访问特定域名可获取flag。2) SQS消息队列的政策没有限制角色,允许发送和接收消息,通过aws sqs命令行工具的receive-…

Javaweb知识之AJAX的概念的通俗理解(包含axios)

AJAX 一.概念: AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML 异步 JavaScript的理解:就像你给朋友发了一条消息,然后继续做其他事情一样。你不需要等待朋友回复,可以继续做自…

JS-42-Node.js01-Node.js介绍

一、浏览器大战 众所周知,在Netscape设计出JavaScript后的短短几个月,JavaScript事实上已经是前端开发的唯一标准。 后来,微软通过IE击败了Netscape后一统桌面,结果几年时间,浏览器毫无进步。(2001年推出…

C++面向对象程序设计-北京大学-郭炜【课程笔记(七)】

C面向对象程序设计-北京大学-郭炜【课程笔记(七)】 1、类型转换运算符2、自增、自减运算符的重载3、继承和派生的基本概念3.1、基本概念3.2、派生类对象的内存空间 4、继承关系和复合关系4.1、继承关系的使用4.2、复合关系的使用 5、派生类覆盖基类成员6…

《论文阅读》基于情感原因感知的共情对话生成模型 2023 AAAI

《论文阅读》基于情感原因感知的共情对话生成模型 2023 AAAI 前言简介模型构架情绪推理器回复生成器实验结果前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《The Empathic Dialogue Generation Model…

npm ERR! code CERT_HAS_EXPIRED (创建vue过程)

npm ERR! code CERT_HAS_EXPIRED (创建vue过程) 起因:卸载 npm uninstall -g vue-cli时候发现报这个错误。 当我们创建vue之前,使用npm更新或者安装啥的时,出现此类提示,则表明,用来验证和网络加…

VSCode和CMake实现C/C++开发

VSCode和CMake实现Ubuntu下C/C++开发总结 目录 0.简介1.Linux系统介绍2.开发环境搭建2.1 编译器,调试器安装2.2 CMake安装3.GCC编译器3.1 编译过程3.2 g++重要编译参数4.g++编译实战4.0 编译前4.1 直接编译4.2 生成库文件并编译4.3 编译后4.3.1 编译完成后的目录结构4.3.2 运行…

ChatGPT改写:论文写作新时代

ChatGPT无限次数:点击直达 ChatGPT改写:论文写作新时代 随着人工智能技术的不断发展,论文写作也进入了新的时代。ChatGPT作为一种强大的自然语言处理模型,在论文写作领域展现出巨大潜力。本文将探讨ChatGPT在论文写作中的应用和影响&#xf…

网络面试相关

GET和POST请求的区别 1、get请求一般是去取获取数据(其实也可以提交,但常见的是获取数据),post请求一般是去提交数据。 2、get因为参数会放在url中,所以隐私性,安全性较差,请求的数据长度是有…

Unity 线程相关知识

线程 线程介绍 通过线程执行函数和直接在主函数中调用函数的区别是:通过直接调用函数时会按照语句顺序逐句执行,必定会完成上一句后再执行下一句,而通过线程执行的函数会从调用开始与主函数同步执行 调用线程的方式 调用无参数函数线程的…

.NET Core中间件管道MAP的作用和使用

在ASP.NET Core中,中间件是构建HTTP请求管道的基本组件。中间件组件负责在ASP.NET Core应用程序中处理请求和响应。中间件可以执行多种任务,例如身份验证、记录、异常处理等。你可以按顺序将多个中间件组件组合在一起,形成一个请求处理管道。…