I have implemented the JSON schema validator [1][2] for APIM 2.6 and planned to release it as an update. We have provided a per API level option to enable the schema validator at the API design phase. We keep an RXT field to determine if the JSON schema validation is enabled or not for a particular API. Please find the documentation [3] of JSON schema validator for APIM 2.6.
We have also evaluated the validator mediator to check the feasibility of fulfilling this requirement. IMO it is extremely hard to implement a perfect validator which validates all the resource paths against the schemas which are defined in the swagger definition. Thus, we have developed our own implementation using a class mediator. @Shalika As I have understood from the mail, you have come up with two possible solutions to validate the request/response messages. When it comes to the third-party library option, I have experienced some limitations with the Everit library. However, it was the best viable option among other libraries such as swagger inflector, Atlassian JSON schema validator, and the java json tool schema validator. Please find the documentation for the library evaluation [4] we did. Your second option might be a good initiative for the future adoptions. If we can create our own implementation, it will produce a well defined and flexible validator rather than doing unnecessary coding in order to avoid third-party library limitations. [1] [Architecture] [APIM] Json Schema Validation [2] Invitation: Design Review - Json Schema Validation [3] https://docs.google.com/document/d/14AYpwVtRMpe2-KbFILRqRzFA-_Gt7nlHZCCCPzs0jw0/edit?usp=sharing [4] https://docs.google.com/document/d/1rYBXD3j_ql06ayN2G-Z_ W1liJRTOIknuCrTZqSEUyho/edit?usp=sharing Regards, Hasunie On Fri, Sep 14, 2018 at 10:42 PM, Firzhan Naqash <firz...@wso2.com> wrote: > Hi Shalika, > > This particular validation functionality has been partially implemented > (Without UI support) across various customer implementations. > > However, before implementing this feature, we should be able to consider > having options to use JSON schema validation options at the resource level > or on a global level. > > I have already done a custom handler implementation for JSON validation by > using the json*-schema-validator *library which is being used with the > EI's Validator mediator. AFAIK Lahiru implemented a comprehensive JSON > schema validation library. > > Regards, > Firzhan > > > email: firz...@wso2.com > mobile: (+94) 77 9785674 <%28%2B94%29%2071%205247551>*| > blog: http://firzhanblogger.blogspot.com/ > <http://firzhanblogger.blogspot.com/> <http://suhothayan.blogspot.com/>* > *twitter: https://twitter.com/firzhan007 > <https://twitter.com/firzhan007> | linked-in: > **https://www.linkedin.com/in/firzhan > <https://www.linkedin.com/in/firzhan>* > > > On Fri, Sep 14, 2018 at 9:49 AM Hasunie Adikari <hasu...@wso2.com> wrote: > >> Hi Shalika, >> >> Could you please elaborate more on how are we planning to store the >> swagger definition in the API Gateway runtime? >> >> Regards, >> Hasunie >> >> On Fri, Sep 14, 2018 at 3:33 PM, Shalki Wenushika <wenush...@wso2.com> >> wrote: >> >>> Hi All, >>> >>> Problem >>> >>> >>> - >>> >>> Current microgateway version does not have an approach to validate >>> requests/responses. >>> - >>> >>> Validating request/response based on a predefined API schema is >>> helpful to ensure whether the user have sent the request >>> according to the schema and also to ensure whether the back-end have sent >>> the correct response to the request. >>> >>> Solution >>> >>> >>> - >>> >>> Store the swagger definition within gateway runtime. >>> - >>> >>> When a user sends a request to the microgateway, validate the >>> request using the swagger file. >>> - >>> >>> If valid, send the request to the back-end or otherwise send an >>> error message to the user. >>> - >>> >>> And when the back-end sends response to the request, validate the >>> response using the swagger file. >>> - >>> >>> If valid, send the response to the user or otherwise send an error >>> message. >>> >>> >>> Implementation >>> >>> >>> - >>> >>> Two solutions exist for this problem. >>> >>> 01. First solution is to validate request/response using everit JSON >>> schema validator. >>> >>> 02. Implement a request/response validator in Ballerina. >>> >>> For that swagger-model-validator for Node.js can be convert in to >>> Ballerina. >>> >>> >>> >>> Fig 1: Validating a request >>> >>> Fig 2: Validating a >>> response >>> >>> >>> Thank you! >>> >>> -- >>> >>> *Shalki Wenushika* >>> *Software engineering Intern* >>> WSO2 (University of Moratuwa) >>> *mobile *: *+94 716792399* | *email *: >>> <http://c.content.wso2.com/signatures/wso2-signature-general.png> >>> wenush...@wso2.com >>> >>> >>> >>> >> >> >> -- >> *Hasunie Adikari* >> Senior Software Engineer >> WSO2 Inc.; http://wso2.com >> lean.enterprise.middleware >> blog http://hasuniea.blogspot.com | https://medium.com/@Hasunie/ >> Mobile:+94713095876 >> >> _______________________________________________ >> Architecture mailing list >> Architecture@wso2.org >> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >> > > _______________________________________________ > Architecture mailing list > Architecture@wso2.org > https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture > > -- *Hasunie Adikari* Senior Software Engineer WSO2 Inc.; http://wso2.com lean.enterprise.middleware blog http://hasuniea.blogspot.com | https://medium.com/@Hasunie/ Mobile:+94713095876
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture