在请求体中接受数字作为字符串?

问题描述 投票:0回答:1

我有一个API规范,它定义了一个参数 account_id 作为 string 的请求体中。

假设一个请求在请求主体中带有一个 number 甚至 boolean 对于该领域。类似于:

"account_id": 1234567890

"account_id": true

我使用的解串器,Vert.x的 Json.decodeValue,自动将这些类型转换为 string 但它没有提供严格的类型检查选项)。

问题:在这种情况下,最好的做法是什么?

在这种情况下最好的做法是什么?我是否应该严格规范并拒绝请求?或者让 numberboolean 悄悄转化为 string?

json api rest vert.x
1个回答
0
投票

这是一个非常广泛的问题,与Vert.x没有直接关系。

TL;DR - 让它转换为String,然后在你的业务层中再次解析它,做必要的验证。

我想说这真的取决于你的API的目的。为什么要这样做呢?account_id 是一个字符串?是不是因为你打算将来使用UUID或者其他非数字标识符?

总之,这似乎是一个商业问题。所以,接收 account_id 作为一个字符串,然后如果需要,将其解析为一个整数,并返回相关的错误。将来,如果你也会收到其他类型的标识符,你可以添加另一个验证,返回相同类型的错误。


0
投票

vert.x的 Json 类是Jackson的 ObjectMapper 这是一个公共静态字段。

这意味着你可以以任何你喜欢的方式配置它。

Json.mapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, false);
© www.soinside.com 2019 - 2024. All rights reserved.