Json 如何为API客户端提供端点的最新验证规则?
在我们的API中,我们希望实现一个解决方案,它允许客户端提取验证规则。同步验证规则和“您的密码应为8-100个符号”等字段下的任何有用文本将非常有用 例如,当客户端请求注册验证规则时,API使用以下JSON响应:Json 如何为API客户端提供端点的最新验证规则?,json,forms,api,validation,Json,Forms,Api,Validation,在我们的API中,我们希望实现一个解决方案,它允许客户端提取验证规则。同步验证规则和“您的密码应为8-100个符号”等字段下的任何有用文本将非常有用 例如,当客户端请求注册验证规则时,API使用以下JSON响应: { "email": { "html5type": "email", "maxlength": 255, "required": true }, "phone": { "html5type": "tel", "minlength":
{
"email": {
"html5type": "email",
"maxlength": 255,
"required": true
},
"phone": {
"html5type": "tel",
"minlength": 11,
"maxlength": 11,
"pattern": "[0-9]{11}",
"required": true
},
"username": {
"html5type": "text",
"minlength": 5,
"maxlength": 18,
"pattern": "[a-z0-9_]{5,18}",
"required": true
},
"password": {
"html5type": "password",
"minlength": 8,
"maxlength": 100,
"required": true
},
"birthday": {
"html5type": "date",
"required": false
}
}
问题是关于请求此数据的最佳格式。我们考虑了三种方法
1.查询参数
客户端应向端点添加?规则参数并发送请求
因此,这两个请求将具有不同的行为:
POST/v1/注册帐户
-创建帐户
POST/v1/register account?规则
-仅响应每个字段的规则列表
但我不确定这是否是实现此功能的优雅方式。在我们的项目中,我们也将为过滤器实现这个特性(我的意思是客户端将能够获得过滤器的验证规则)。所以我觉得在这种情况下会有点难看:
GET/v1/products?vendor=33
-列出33的供应商的产品
GET/v1/products?规则
-获取所有可用筛选器的验证规则
但我的同事喜欢这样
2. <代码>接受
标题
另一个想法是允许客户端在Accept
头中设置自定义application/rules+json
MIME类型,该类型将由API进行优先级排序,如果API在此头中满足此MIME类型,它将用验证规则进行响应
但我们并不真正喜欢这个想法,因为Accept
头应该只修改响应的表示(格式)。我的意思是,如果需要XML响应,可以将application/XML
添加到标题中;如果需要JSON格式,可以将其设置为application/JSON
。然而,这种自定义MIME类型的想法与表示无关,它绝对是另一种类型的数据
3.另一个端点
我个人喜欢的一种方式是另一个端点。当客户端发送GET/v1/rules?endpoint=/v1/register account&method=POST
API时,它只响应给定端点的验证规则
我想知道你的意见。你会选择哪条路?为什么?也许您知道这里没有列出的另一个好方法。是一个被广泛接受的验证JSON数据的词汇表。最好是你用这个,而不是你自己的
由于JSON模式很流行,许多验证器存在于不同的编程语言中。使用JSON模式验证器,客户机可以根据您的JSON模式轻松验证其数据
至于端点,您可以简单地使用选项
HTTP方法。因此OPTIONS/v1/register account
应该返回使用该端点的要求(包括模式)。请看一个例子