Define REST

Using the REST subsystem, you can expose REST-based APIs or services. The REST service is designed as a pluggable architecture. To create a new REST endpoint, simply add a library in the form “plugin_rest_*”. The REST service will automatically load all REST plugins on startup.

Namespace considerations

The gnunet-rest-service will load all plugins that are installed. As such it is important that the endpoint namespaces do not clash.

For example, plugin X might expose the endpoint “/xxx” while plugin Y exposes endpoint “/xxx/yyy”. This is a problem if plugin X is also supposed to handle a call to “/xxx/yyy”. Currently the REST service will not complain or warn about such clashes, so please make sure that endpoints are unambiguous.

Endpoint documentation

This is WIP. Endpoints should be documented appropriately. Preferably using annotations.