2014-10-03 13 views
5

Esiste un modo per far sì che l'API Kit Router convalidi lo schema in entrata? Ho il seguente nel mio file RAML ma non convalida lo schema in entrata.Validazione dello schema del kit API Router

- emails: | 
     { 
     "$schema": "http://json-schema.org/draft-04/schema#", 
     "type" : "object", 
     "properties" : { 
      "email" : { 
      "type" : "string" 
      }, 
      "name" : { 
      "type" : "string" 
      }, 
      "emailOrigin" : { 
      "type" : "string" 
      } 
     } 
     } 

resourceTypes: 
    - postbase: 
     post: 
     responses: 
      200: 
      body: 
       application/json: 
      500: 
      body: 
       application/json: 
    - putBase: 
     put: 
     responses: 
      200: 
      body: 
       application/json: 
      500: 
      body: 
       application/json: 

/emails: 
    type: postbase 
    post: 
    description: | 
     Recieve emails captured from various parts of the site. 
    body: 
    schema: emails 
+0

Potrebbe pubblicare il JSON, che si aspettarsi di fallire in questo caso? – Sudarshan

+0

Sono stato fuori da questo progetto da circa 2 settimane dopo aver fatto il post (in realtà in una compagnia diversa). Quello che stavo cercando era se qualcuno inviava un int al posto di una stringa che avrebbe dovuto fallire. In retrospettiva, suppongo che qualsiasi cosa debba essere accettata da una stringa, ma forse se avessi definito un campo int e avessi inviato una stringa, sarebbe effettivamente fallito. Probabilmente avevo anche bisogno di richiedere un campo. A questo punto è solo un esercizio per chiunque altro possa cercare la domanda in quanto non sto usando RAML nel mio attuale progetto. – SteveS

risposta

0

Per quanto posso vedere, qualsiasi organismo sarà valida per tale schema. Tutti i campi sono una stringa, non richiesta, non un formato specifico. Prova a mettere alcuni dei campi come richiesto e guarda cosa succede

Cheers!

+0

Penso che tu abbia ragione, a posteriori penso che tutto sarebbe stato convalidato contro quello schema. Come affermato nel mio commento sopra, sono fuori progetto e non utilizzo più RAML, quindi non sarò in grado di confermare la tua soluzione ma sembra corretta. – SteveS

1

I seguenti riferimenti aiutano ulteriormente http://forums.raml.org/t/examples-validations-in-raml-parsers/80

ulteriore esempio, come di seguito: employeeDetailsSchema.json file di

{ 
    "type": "object", 
    "$schema": "http://json-schema.org/draft-03/schema", 
    "id": "http://jsonschema.net", 
    "required": true, 
    "properties": { 
     "employeeID": { 
      "type": "string", -------> Validates the Data type 
      "required": true -------> Validates whether data is present or not 
     }, 
     "employeeFirstName": { 
      "type": "string", 
      "required": true 
     }, 
     "employeeLastName": { 
      "type": "string", 
      "required": true 
     }, 
     "employeeDOB": { 
      "type": "string", 
      "required": true 
     } 
    } 
} 

schema utilizzato nel mio Raml

#%RAML 0.8 
title: ManageEmployees 
version: 1.0 

baseUri: http://api.acme.com/ 

mediaType: application/json 


/newEmployee: 
    post: 
    description: Create new employees 

    body: 
      schema: !include com/ww/schema/employeeDetailsSchema.json 

    put: 
    description: Update employees details 
    body: 
      schema: !include com/ww/schema/employeeDetailsSchema.json 

    responses: 
      200: 
      body: 
       example: !include com/ww/schema/employeeExample.json 
+0

Era da un po 'che stavo cercando questo, ma credo che il "richiesto" potrebbe essere quello che stavo cercando. – SteveS

Problemi correlati