我在服务器方面几乎没有问题。
我有超过50个API。
需要检查每个API(GET,POST)方法以下内容。
例如1:
{
"name": "<city name1>",
"status": 1,
"id" : 3,
"code" : 5,
"abcd" : "44",
---------------
------------
}
在上面输入我需要检查几个键是mantory。例如:姓名,代码
示例2:
{
"country": [
{
"state": [
{
"name": "<city name1>",
"status": 1
}, {
"name": "<city name2>",
"status": 2
}, {
"name": "<city name3>",
"status": 3
}
],
"name": "<state Name1>"
}, {
"state": [
{
"name": "<city name1>",
"status": 1
}, {
"name": "<city name2>",
"status": 2
}, {
"name": "<city name3>",
"status": 3
}
],
"name": "<state Name2>"
}
]
}
在上面的示例中,我需要检查州和城市&gt;名称是强制性的。
我检查了包裹,但没有找到适合我的包裹。
有任何包用于检查json验证吗?
答案 0 :(得分:0)
我使用validator。它有许多功能,如isEmail,isAlphaNumeric等...
它还支持消毒。回购中的样品和测试。
要检查密钥是否存在,可以使用标准的hasOwnProperty
Check if a key exists inside a json object
这些选项将很快,并且能够将非常具体的自定义检查和更好的错误消息反馈给消费者。
另一种选择是json架构。简单地检查代码(上图)可能更快,但使用json模式,您可以在api中创建公共代码,为每个api加载模式文件,这样可能会减少代码。
示例lib。
https://www.npmjs.com/package/jsonschema
因此,它可以平衡更多/更少的代码,性能以及您希望自定义检查和错误消息的方式。
答案 1 :(得分:0)
如果您正在使用,请尝试使用此解决方案https://github.com/askucher/ftjs。
npm install ftjs
您可以定义类型定义文件(示例)
#SimpleTypes
String : /.?/
Integer : Global.Integer
Int : Integer
Boolean : Global.Boolean
Bool : Boolean
Double : Global.Double
Numeric : Double | Integer
Null : Global.Null
Undefined : Global.Undefined
Email : /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
Strings : [String]
#TypeExtensions
String...
Min min : /^.{#{min},}$/
Max max : /^.{,#{max}}$/
Range min max : /^.{#{min},#{max}}$/
Integer...
Min min : @ >= min
Max max : @ <= max
#Enums
Status : "active" | "inactive"
Missing : Null | Undefined
#ComplexTypes
User
------------
email : Email
picture : String
firstname : String Range(5,20)
lastname : String Min(5) Max(20)
status : Status
bio : String | Missing
tags : [String]
&#13;
var types = require("ftjs");
var fs = require("fs");
var validate = types({
System: fs.readFileSync("./examples/System.ft").toString("utf8")
});
var user = {
email: 'a.stegno@gmail.com',
picture: 'http://some-website.com/picture.png',
firstname: 'Andrey',
lastname: 'Test',
status: 'active',
bio: 'Ho',
tags: ["user"]
};
validate("System.User", user); //true
&#13;