HTTP-RPC is an open-source framework for implementing and interacting with RESTful and REST-like web services in Java. It is extremely lightweight and requires only a Java runtime environment and a servlet container. The entire framework is distributed as a single JAR file that is about 66KB in size, making it an ideal choice for applications where a minimal footprint is desired.

HTTP-RPC version 5.8 is now available for download and via Maven Central. This release adds support for automatically generated API documentation. For example, given the following service implementation:

```
@WebServlet(urlPatterns={"/math/*"})
public class MathService extends WebService {
@RequestMethod("GET")
@ResourcePath("sum")
public double getSum(double a, double b) {
return a + b;
}
@RequestMethod("GET")
@ResourcePath("sum")
public double getSum(List<Double> values) {
double total = 0;
for (double value : values) {
total += value;
}
return total;
}
}
```

a GET request for */math?api* will now return a document that describes all of the service's endpoints and associated operations:

## /math/sum

`GET (a: double, b: double) -> double`

`GET (values: [double]) -> double`

Services can additionally provide localized documentation for each method by including one or more resource bundles on the classpath. For example, the following *MathService.properties* file could be used to provide localized method descriptions for the `MathService`

class:

```
MathService = Math example service.
getSum = Calculates the sum of two or more numbers.
getSum.a = The first number.
getSum.b = The second number.
getSum.values = The numbers to add.
```

The first line describes the service itself. The remaining lines describe the service methods and their parameters. A localized description of the math service might look like this:

Math example service.

## /math/sum

`GET (a: double, b: double) -> double`

Calculates the sum of two or more numbers.

aThe first number.bThe second number.`GET (values: [double]) -> double`

Calculates the sum of two or more numbers.

valuesThe numbers to add.

This allows consumers in any locale to easily discover and understand the operations supported by an endpoint.

For more information, see the project README.