In der Regel nimmt im Lauf der Entwicklung die Anzahl REST Services zu und damit auch die Komplexität und Redundanz. So fehlt ein zentrales Error Handling oder ein Überwachungspunkt (Single Rest Endpoint).
Ein Single Rest Endpoint arbeitet wie ein Portier, alle Zu- und Abgänge werden über einen Punkt abgewickelt. Er zwingt uns ein Protokoll für die Kommunikation zu definieren und damit die Rest Endpoints zu standardisieren.
Genau hier hilft das Konzept des generischen Standalone Rest Endpoints. Die Klasse GenericRestService zeigt anhand der Methode Get den Servlet Endpoint. Dieser Call behandelt allfällige Exceptions und leitet den Call an die Methode executeGet weiter.
package ch.std.service.generic;
import javax.servlet.http.HttpServletRequest;
import org.json.JSONObject;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/rest/generic", produces = MediaType.APPLICATION_JSON_VALUE)
public class GenericRestService {
public GenericRestService() {
}
@RequestMapping(method = RequestMethod.GET)
public Object get(HttpServletRequest httpServletRequest) {
try {
JSONObject jsonResponse = executeGet(httpServletRequest);
return jsonResponse;
} catch(Exception e) {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("status", "failure");
} catch (Exception ee) {
}
return jsonObject;
}
}
public JSONObject executeGet(HttpServletRequest httpServletRequest) {
throw new UnsupportedOperationException();
}
}