我有一个API规范,它定义了一个参数 account_id
作为 string
的请求体中。
假设一个请求在请求主体中带有一个 number
甚至 boolean
对于该领域。类似于:
"account_id": 1234567890
或
"account_id": true
我使用的解串器,Vert.x的 Json.decodeValue
,自动将这些类型转换为 string
但它没有提供严格的类型检查选项)。
问题:在这种情况下,最好的做法是什么?
在这种情况下最好的做法是什么?我是否应该严格规范并拒绝请求?或者让 number
和 boolean
悄悄转化为 string
?
这是一个非常广泛的问题,与Vert.x没有直接关系。
TL;DR - 让它转换为String,然后在你的业务层中再次解析它,做必要的验证。
我想说这真的取决于你的API的目的。为什么要这样做呢?account_id
是一个字符串?是不是因为你打算将来使用UUID或者其他非数字标识符?
总之,这似乎是一个商业问题。所以,接收 account_id
作为一个字符串,然后如果需要,将其解析为一个整数,并返回相关的错误。将来,如果你也会收到其他类型的标识符,你可以添加另一个验证,返回相同类型的错误。
vert.x的 Json
类是Jackson的 ObjectMapper
这是一个公共静态字段。
这意味着你可以以任何你喜欢的方式配置它。
Json.mapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, false);