You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:UUID(uuidString: String)生成大写UUID致Postgres验证失败

问题分析:UUID(uuidString:)生成大写UUID导致服务端校验失败

原因说明

iOS的UUID(uuidString:)初始化方法,不管传入的字符串是大写还是小写,生成的UUID实例在调用uuidString属性时,默认返回大写格式的字符串。这是系统API的固定行为,与输入参数的大小写无关。

解决办法

客户端调整

生成请求URL前,把UUID转为小写格式再拼接:

// 若userID是UUID实例
let lowercasedUserID = userID.uuidString.lowercased()
// 使用lowercasedUserID拼接URL

如果UserDefaults中存储的是字符串形式的UUID,直接调用lowercased()处理:

if let userIDStr = UserDefaults.standard.string(forKey: "userID") {
    let lowercasedID = userIDStr.lowercased()
    // 拼接URL逻辑
}

服务端兼容(可选)

如果无法修改客户端代码,可在Vapor服务端校验时,将请求中的UUID转为小写后再与Postgres存储值对比:

// 假设从请求中获取的UUID参数为requestUserID
let lowercasedRequestID = requestUserID.lowercased()
// 用lowercasedRequestID执行数据库查询或校验

额外提示

Postgres的原生uuid类型本身不区分大小写,若服务端使用该类型存储UserID,即使传入大写UUID也能正确匹配。如果当前是用字符串类型存储,建议改为uuid类型,从根源避免大小写问题。

内容的提问来源于stack exchange,提问作者Peter Bien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:22:22