『每周译Go』理解并用 Go 语言实现一个 HTTP 中间件

本文介绍了HTTP中间件的概念,使用场景,并在Go语言中实现了日志中间件。通过Gorilla Mux的Handlers包展示了如何简化中间件构建,帮助读者理解中间件在Go程序中的应用。
摘要由CSDN通过智能技术生成

1

简介

当运行在不同计算机上的客户端与服务器进行通信时,就需要使用中间件。通过本文,读者将会了解什么是中间件、中间件使用场景以及它们是如何在 Go 语言中构建的。

2

什么是 HTTP 中间件

为了更好理解 HTTP 中间件是什么,先要解释一些基本概念。假如一个开发者想要建立两台计算机之间的通信(其中一台计算机为另一台提供资源或服务),他将会构建一个 client/server 系统来实现。服务器等待客户端请求资源或服务,并将请求的资源转发给客户端作为响应。请求的资源或服务可能为:

  • 客户端身份校验

  • 确认客户端对服务器提供的特定服务是否有访问权限

  • 提供服务

  • 保障数据安全,确保客户端无法访问未授权数据,防止数据被窃取

服务器分为无状态和有状态两类,无状态服务器不关心客户端通信状态,而有状态服务器则关心。

中间件是一种将软件或企业应用连接到另一个软件应用,并构成分布式系统的软件实体。HTTP 请求被发送到 API 服务器,而服务器向客户端返回 HTTP 响应。

中间件具备接收请求功能,可以在请求到达处理方法之前对其进行预处理。然后,它将处理具体方法,并将其响应结果发送给客户端。

3

中间件使用场景

最常见的使用场景为:

  • 日志记录器,用于记录每个 REST API 访问请求

  • 验证用户 session,并保持通信存活

  • 用户鉴权

  • 编写自定义逻辑以抽取请求数据

  • 为客户端提供服务时将属性附在响应信息

4

中间件 Handlers

在 Go 语言中,中间件 Handler 是封装另一个 http.Handler 以对请求进行预处理或后续处理的 http.Handler。它介于 Go Web 服务器与实际的处理程序之间,因此被称为“中间件”。

middleware_handlers.png

下面是一个基本的中间件 Handler:

package main 
import (
    "fmt"
    "net/http"
)

func middleware(handler http.Handler) http.H
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值