如何在REST请求中添加Api-Key验证
作者:API传播员 · 2025-08-20 · 阅读时间:4分钟
## 在REST请求中实现Api-Key验证的最佳实践
在开发Web应用程序时,确保API的安全性是至关重要的。最近,我需要为一个包含多个端点的Web应用程序实现Api-Key验证。为了简化管理,我采用了一种集中化的方式来实现这一功能。本文将向您详细介绍如何以通用或非通用的方式,将Api-Key验证集成到Web应用程序的所有端点中。
---
### 添加Api-Key参数
首先,我在一个名为 ApiKey
的类中新增了一个参数,并将其初始化为空值。这个参数将用于存储我们的Api-Key。
---
### 修改OnPreDispatch方法
接下来,我对 OnPreDispatch
方法进行了修改。该方法会在处理请求之前被调用,是添加Api-Key验证的理想位置。在这里,我新增了一段代码,用于调用一个名为 ValidateApiKey
的方法。
```plaintext

实现ValidateApiKey方法
ValidateApiKey
方法是验证Api-Key的核心逻辑。以下是其实现的关键步骤:
-
检查是否需要验证
首先,通过调用MustCheckApiKey
方法,判断当前请求是否需要验证Api-Key。例如,对于某些公共API端点,我们可能不需要进行验证。 -
获取请求信息
方法接收两个参数:pUrl
:请求的地址,例如/api/resource
。pMethod
:请求的HTTP方法,如GET
、POST
、PUT
等。
根据这些信息,我们可以灵活地决定是否应用Api-Key验证。
-
验证Api-Key
如果需要验证,则检查类中ApiKey
参数的值是否与请求头中的api-key
属性值匹配。如果匹配,则允许请求通过;否则返回401 Unauthorized
错误。
自定义MustCheckApiKey方法
在扩展类中,我们可以重写 MustCheckApiKey
方法,以满足具体需求。例如,如果我们希望 GET
请求是公共的,而 POST
请求需要验证,可以这样实现:
// 示例代码
如果请求是GET到Home,则不应用Api-Key验证
实际案例:保护URL生成端点
以下是一个实际案例,展示如何在项目中应用上述方法:
项目是一个基于IRIS Docker的URL缩短器。在该项目中,我们希望保护短URL生成端点(POST
请求),但允许用户无需验证即可访问缩短的链接(GET
请求)。
-
扩展Base类
确保我们的类继承自Base.cls
类。例如:AQS.urlShopener类.UrlREST扩展了urlShortener.REST.Base
-
设置ApiKey参数
重写ApiKey
参数的值,例如:参数ApiKey="myRandomApiKeyValue"
-
重写MustCheckApiKey方法
根据需求,定义哪些请求需要验证。例如:如果是POST请求,则需要验证Api-Key;如果是GET请求,则无需验证。
请求验证示例
以下是一些请求验证的截图,展示了正确和错误的Api-Key验证结果:
-
正确的Api-Key
-
错误或缺失的Api-Key
-
无需Api-Key的GET请求
结语
通过上述方法,我们可以灵活地为Web应用程序的不同端点实现Api-Key验证,从而提升系统的安全性。我希望本文的内容能对您的项目有所帮助。
现在,让我们享受新实现的安全功能吧!
.png)
原文链接: https://community.intersystems.com/post/how-add-api-key-validation-rest-requests
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- 使用Python进行API调用:面向开发人员的分步指南
- Go工程化(五) API 设计下: 基于 protobuf 自动生成 gin 代码
- Python调用股票API获取实时数据
- API在量子计算中的作用
- API请求 – 什么是API请求?
- 给初学者的RESTful API 安全设计指南!
- 如何在 Facebook Developers 上设置 WhatsApp Cloud API
- 支付网关API如何支持小型企业?
- Python调用免费翻译API实现Excel文件批量翻译
- 为开源项目 go-gin-api 增加 WebSocket 模块
- AI编程的风险,如何毁掉你的 API?
- 使用预约调度API的运输管理
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册