CustomRestRule-Regeln ermöglichen den Aufruf von Java-Regeln direkt über den REST-Service.
Sie sind unabhängig von Businessobjekten und müssen deshalb nicht über den Regelmanger zugewiesen werden.
Die Berechtigung einer CustomRestRule wird über eine Zuweisung im Unterformular "REST-Regeln" in der jeweiligen Benutzergruppe durchgeführt.
Über ein Context-Objekt erhält man Zugriff auf z.B. aufrufenden Benutzer oder Sprache.
package example.rest;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("example")
public class CustomRestWithPathTestRule implements CustomRestRule {
@GET
@Path("customers")
@Produces("application/json")
public List<Customer> customers() {
return Arrays.asList(
new Customer(1, "Mustermann"),
new Customer(2, "Maier")
);
}
public static class Customer {
private int id;
private String name;
public Customer(final int id, final String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
}
Der Aufruf des REST-Service wird über @Path Annotationen gesteuert.
CustomRestRegeln besitzen immer den URL-Prefix "/rest/custom/".
Der obige REST-Service liefert nach Aufruf von http://localhost/nuclos/rest/custom/example/customers folgendes Ergebnis:
[
{
id: 1,
name: "Mustermann"
},
{
id: 2,
name: "Maier"
}
]
Über ein Context-Objekt kann man außerdem Zugriff auf z.B. den aufrufenden Benutzer oder die Sprache erhalten. Dieses wird innerhalb der Klasse wie folgt eingebunden:
@Inject protected Provider<CustomRestContext> context; // Dazu müssen noch zwei Klassen importiert werden: import org.nuclos.api.rule.CustomRestRule; import org.nuclos.api.context.CustomRestContext;