diff --git a/README.md b/README.md index c3e54ab..ce50051 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,174 @@ through an API Gateway that supports CORS. Hopefully, [apicast](https://github.com/3scale/apicast) does ! It is intended to be used in the 3scale developer portal. + +## An history of SOAP Services Documentation + +Historically, SOAP Services were documented by a WSDL and their associated XSD. +However, the level of precision and usefulness allowed by the WSDL and XSD +annotations were mere. + +That's why SOAP Services were usually accompanied by another documentation, +usually a PDF or Word document that describes fields semantic, business scenario +that could be implemented, error handling, implementation details. Some examples +are usually given. + +Those documents are maybe the most useful, in order to understand and use +the SOAP Service. + +## Why a "SOAPUI" ? + +An implementation that only relies on WSDL and XSD to present a "Try it out" +feature is doomed to failure. The only example that this implementation +can propose is a sample SOAP message with question marks in each field to +fill-in. + +``` + + + + + ? + ? + + + +``` + +But, do I need to fill in the `foo` field only ? or `bar` only ? or both ? +Which sample values could I use in order to do this and that ? + +This project takes another approach that is based on examples. The idea is to +re-use the content of existing SOAP documentation (the meaty PDF or Word +documentation). + +Most of this content can already be moved to an API Developer Portal, presented +as nice to read Web Pages. + +This project provides a way to document the sample SOAP calls, with an +interactive interface where the developer can discover examples when reading +the documentation and can try it out directly from the documentation page. + +Following this philosophy, the previous example would look like this: + +_To do this, you have to pass the `foo` field with bla bla bla. Try it by yourself:_ +``` + + 123456 + +``` + +_To do this, you have to pass the `bar` field with bla bla bla. Try it by yourself:_ +``` + + ABCDEF + +``` + +The result is a business documentation with real world examples that can be tried +out by the developer. + +## Installation in the 3scale Developer Portal + +Load the following files in the 3scale Developer Portal, by creating new pages +with the following parameters: + +| Title | Section | Path | Content-Type | Content | +---- +| soapui.js | `|--javascripts` | `/javascripts/soapui.js` | `text/javascript` | [soapui.js](soapui.js) | +| jquery.soap.js | `|--javascripts` | `/javascripts/jquery.soap.js` | `text/javascript` | [jquery.soap.js](jquery.soap/jquery.soap.js) | +| vkbeautify.js | `|--javascripts` | `/javascripts/vkbeautify.js` | `text/javascript` | [vkbeautify.js](vkBeautify/vkbeautify.js) | +| soapui.css | `|--css` | `/css/soapui.css` | `text/css` | [soapui.css](soapui.css) | + +All those pages share the same common parameters: + - Layout: *Leave empty* + - Liquid enabled: unchecked + - Handler: *Leave empty* + +Then, create a new page to hold the documentation of your SOAP Service with the following parameters: + - Section: `. Root` + - Layout: `Main Layout` + - Path: *something like `/docs/my_soap_service`* + - Content Type: `text/html` + - Liquid Enabled: unchecked + - Handler: *Leave empty* + +In the content, make sure to have at the top at least: +``` + + + + + +``` + +And then write your documentation as usual: +``` +

Description of our SOAP service

+blablabla +

The getCountry method

+Here is what does the getCountry method. Blablabla. +``` + +When you want to insert an example, write: +``` +
+http://acme.com/getCountry + + + +
+``` + +Where the `soap-action` tag holds the value of the `soapAction` header and +`soap-body` holds the SOAP Body (so, without the SOAP envelope) as a comment block. + +## Development + +If you would like to give a try to this project without having a 3scale +API Management account or in order to develop more conveniently, you can +use the `index.html` test page. + +First of all, clone this repository and the needed submodules: +``` +git clone https://github.com/nmasse-itix/soapui.git +cd soapui +git submodule init +git submodule update +``` + +Then, modify the `index.html` page to point to your sample SOAP service. +You can also provide an API Key if you need one. +``` +$.soapui(e, { + url: 'http://api.acme.test/ws', + HTTPHeaders: { "user-key": "" }, + enableLogging: true, + appendMethodToURL: false +}); +``` + +And fire your favourite web server: +``` +python -m SimpleHTTPServer +``` + +Target your web browser to http://localhost:8000/ and you are ready to go! + +Note: the built-in examples use the [Spring Boot SOAP Example](https://github.com/spring-guides/gs-producing-web-service) service.