Giter Site home page Giter Site logo

servicewizard's Introduction

ServiceWizard

Automatically generate API documentation and Javascript client code for your Dropwizard project.

Example output

Take for example a very simple ToDo application's API:

@Wizard(name = "ToDos")
@Path("/toDoItem")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public class ToDoItemResource {

	@POST
	@Wizard(
			title = "Create todo",
			description = "Creates a todo item. An ID will be auto-generated for it.")
	@Consumes(MediaType.APPLICATION_JSON)
	public ToDoItem create(@Valid @WizardDesc("The ToDoItem to be created") ToDoItem item) {
		// ...snip...
	}

	@GET
	@Path("/{id}")
	@Wizard(title = "Retrieve ToDo item")
	public ToDoItem retrieve(@PathParam("id") @WizardDesc("The ID of the item to retrieve") long id) {
		// ...snip...
	}
}

Aside from the typical annotations for a Dropwizard project, this class and its methods use the Wizard annotations to add documentation information.

By scanning these annotations ServiceWizard can create an Angular service to consume this API:

angular.module('ToDoSDK')
.factory('ToDos', ['$http', function($http) {
    var urlBase = 'http://localhost:8080';
    return {

        /**
         * Create todo
         *
         * Creates a todo item. An ID will be auto-generated for it.
         *
         * data - The ToDoItem to be created
        */
        create: function(data) {
            var request = {
                url: urlBase + '/toDoItem',
                method: 'POST',
                data: data
            };
            return $http(request);
        },

        /**
         * Retrieve ToDo item
         *
         * id - The ID of the item to retrieve
        */
        retrieve: function(id) {
            var request = {
                url: urlBase + '/toDoItem/' + id,
                method: 'GET'
            };
            return $http(request);
        }
    };
}]);

It can also create documentation for this API in Markdown:

TodoService

[POST] /todoItem/create

Create todo

Creates a todo item.

[GET] /todoItem/get(id)

Get todo item

Gets an existing todo item by id.

Building from source

$ gradle shadow

servicewizard's People

Contributors

forana avatar jbauschatz-duplicate avatar rev-jcb avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.