如何实现符合RESTful规范的含保密参数的搜索API?
符合RESTful规范的消息搜索API实现方案
方案1:GET请求+自定义请求头存敏感参数
这是最贴合RESTful规范的做法:
- 保留
GET /messages作为搜索端点,分页、排序参数正常放在URL查询串里,比如GET /messages?page=1&ordering=ASC - 把
super_secret_key放在自定义HTTP请求头里,比如X-Super-Secret-Key: your-secret-value。这样既避免了敏感参数暴露在URL(防止被日志、浏览器历史记录捕获),又遵循了GET用于查询类操作的RESTful原则,同时不会占用POST /messages的创建消息功能。
方案2:独立搜索资源端点
如果不想复用/messages端点,可以创建专门的搜索资源,比如GET /message-searches,同样:
- 分页、排序参数放URL查询串
- 敏感密钥放请求头
这种方式更清晰区分普通列表查询和带特殊权限的搜索操作,也符合RESTful中“资源”的定义——搜索可以看作一种独立的资源操作。
避坑提醒
别用GET加请求体的方式,虽然HTTP规范没明确禁止,但很多服务器、代理工具会忽略GET请求的请求体,兼容性很差,容易出问题。
内容的提问来源于stack exchange,提问作者mkey
相关产品推荐
相关产品推荐

