REST — RESTful GNUnet Web APIs — GNUnet documentation

# REST — RESTful GNUnet Web APIs

Todo

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.

Configuration

The REST service can be configured in various ways. The reference config file can be found in `src/rest/rest.conf`:

    [rest]
    REST_PORT=7776
    REST_ALLOW_HEADERS=Authorization,Accept,Content-Type
    REST_ALLOW_ORIGIN=*
    REST_ALLOW_CREDENTIALS=true

The port as well as CORS (cross-origin resource sharing) headers that are supposed to be advertised by the rest service are configurable.

## 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.