2016-05-10 6 views
0

У меня есть несколько вопросов на стороне сервера.Удостоверение формата Node + Json

У меня более 50 API.

Необходимо проверить каждый метод API (GET, POST) следующим образом.

  1. Подтвердить ввод действителен json.
  2. Входные данные должны проверять некоторое имя ключа с данными.

Например 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>" 
     } 
    ] 
} 

В приведенном выше примере мне нужно проверить состояние и город> имя является обязательным.

Я проверил пакеты, но не получил подходящий для меня.

Есть ли какие-либо пакеты для проверки проверки json?

+0

Как вы должны написать вам APIs. Используя любую фреймворк как экспресс или вы использовали простой http-модуль – bilalmetla

+0

Я использую экспресс. – RSKMR

+0

вы также можете найти json-схему http://json-schema.org/. Может помочь. –

ответ

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

Итак, это баланс больше/меньше кода, производительности и, как заказ вы хотите, чтобы ваши проверочные и сообщения об ошибках, чтобы быть.

+0

Я проверил пакет. но я не могу проверить. Можете ли вы написать, например. Это будет полезно для меня. – RSKMR

+0

Этот плагин проверяет наличие ключа или нет? – RSKMR

+0

Я обновил сообщение. Те должны заставить вас идти в правильном направлении. Оба имеют документы и примеры. – bryanmac

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]

var types = require("ftjs"); 
 
    var fs = require("fs"); 
 

 
    var validate = types({ 
 
     System: fs.readFileSync("./examples/System.ft").toString("utf8") 
 
    }); 
 

 
    var user = { 
 
     email: '[email protected]', 
 
     picture: 'http://some-website.com/picture.png', 
 
     firstname: 'Andrey', 
 
     lastname: 'Test', 
 
     status: 'active', 
 
     bio: 'Ho', 
 
     tags: ["user"] 
 
    }; 
 

 
    validate("System.User", user); //true

Смежные вопросы