Question

Now that I've figured out how to use JAXB generate JSON I can request/respond with it on my server and I'd like to figure out how I can generate useful documentation for human beings that are not using Java. My server code looks like this:

@POST
@Path("apath")
@Consumes(MediaType.APPLICATION_JSON)
public String postAPath(InstanceWithXmlRootElementAnnotation instanceWithXmlRootElementAnnotation) {

That's all well in good if someone is using Java. I just give them the Jar with the InstanceWithXmlRootElementAnnotation class in it and tell them to send it over (yes, there's a little more work, ignore those details).

If they're using some other language, I don't know how I'm supposed to tell them the format of their payload and what to expect from the server if it returns a InstanceWithXmlRootElementAnnotation. How can I generate documentation that explains the expected format of the JSON payload?

Was it helpful?

Solution 3

Swagger is a good option (per @fehguy) and you should also check out enunciate and see what works best for your application...

OTHER TIPS

Yes, this is precisely what Swagger is for. Take a look at github for details on how this integrates with JAX-RS

Swagger uses annotations which might get you confused with other functional annotations ..

Use APIDOC for making this nice separation between functional annotations and documentation. It looks like a normal documentation above each method. ex:

/**
 * @api {get} /user/:id Request User information
 * @apiName GetUser
 * @apiGroup User
 *
 * @apiParam {Number} id Users unique ID.
 *
 * @apiSuccess {String} firstname Firstname of the User.
 * @apiSuccess {String} lastname  Lastname of the User.
 */

Also try enunciate, it parses the javadoc and JAX-RS annotations of your service classes to generate documentation:

http://enunciate.codehaus.org/

Here is some example documentation generated by enunciate:

https://repository.sonatype.org/nexus-restlet1x-plugin/default/docs/index.html

There is a maven plugin that works well.It also generates client libraries in various languages as well as sample xml for xml based services. It now supports swagger documentation as well.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top