Generic REST Endpoint mit Spring Boothttps://www.golabs.ch/rest?&atomThu, 28 Mar 2024 22:34:36 +0000stack.ch
https://stack.ch/
5b69ac8d-ed53-11ee-8c11-005056bb85fbSimtech AG - Blog - Spring Boot Blogs - Generic REST Endpoint mit Spring Boot
https://www.golabs.ch/rest
5b69ad90-ed53-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:34:36 +0000Generic REST Endpoint mit Spring Boot
https://www.golabs.ch/rest
5b69aee2-ed53-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:34:36 +0000
https://www.golabs.ch/rest
5b69afea-ed53-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:34:36 +0000Die Programmierung von REST Services mit Spring Boot ist gemäss Lehrbuch eine relativ einfache Sache.Jede Klasse kann als Rest Service funktionieren und Daten im Format JSON verarbeiten. 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.
https://www.golabs.ch/rest
5b69b2b9-ed53-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:34:36 +0000package 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();
}
}
https://www.golabs.ch/rest
5b69b718-ed53-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:34:36 +0000Der effektive Endpoint wird über die Subklasse z.B. EchoRestService implementiert:
https://www.golabs.ch/rest
5b69b83b-ed53-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:34:36 +0000
package ch.std.service.echo;
import java.util.Map;
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.RestController;
import ch.std.service.generic.GenericRestService;
@RestController
@RequestMapping(value = "/rest/echo", produces = MediaType.APPLICATION_JSON_VALUE)
public class EchoRestService extends GenericRestService {
public EchoRestService() {
}
public JSONObject executeGet(HttpServletRequest httpServletRequest) {
Map<?,?> parameterMap = httpServletRequest.getParameterMap();
JSONObject response = new JSONObject(parameterMap);
return response;
}
}
https://www.golabs.ch/rest
5b69bb6c-ed53-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:34:36 +0000Die restlichen HTTP Methoden POST, PUT und DELETE sind nun einfach integrierbar. Die Klasse HttpServletRequest kann nach Belieben selber gekapselt werden.
https://www.golabs.ch/rest
5b69bc92-ed53-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:34:36 +0000War dieser Blog für Sie wertvoll. Wir danken für jede Anregung und FeedbackÜber uns
https://www.golabs.ch/about
Thu, 28 Mar 2024 22:34:36 +00005b69bf01-ed53-11ee-8c11-005056bb85fbAktuell
https://www.golabs.ch/
Thu, 28 Mar 2024 22:34:36 +00005b69bfa5-ed53-11ee-8c11-005056bb85fbAGB
https://www.golabs.ch/agb
Thu, 28 Mar 2024 22:34:36 +00005b69c043-ed53-11ee-8c11-005056bb85fbBildungswege
https://www.golabs.ch/bildungswege
Thu, 28 Mar 2024 22:34:36 +00005b69c0e3-ed53-11ee-8c11-005056bb85fbBlog
https://www.golabs.ch/blog
Thu, 28 Mar 2024 22:34:36 +00005b69c180-ed53-11ee-8c11-005056bb85fbRufen Sie mich an
https://www.golabs.ch/callus
Thu, 28 Mar 2024 22:34:36 +00005b69c21c-ed53-11ee-8c11-005056bb85fbCharts
https://www.golabs.ch/charts
Thu, 28 Mar 2024 22:34:36 +00005b69c2c1-ed53-11ee-8c11-005056bb85fbConsulting
https://www.golabs.ch/consulting
Thu, 28 Mar 2024 22:34:36 +00005b69c363-ed53-11ee-8c11-005056bb85fbKontakt
https://www.golabs.ch/contact
Thu, 28 Mar 2024 22:34:36 +00005b69c444-ed53-11ee-8c11-005056bb85fbAusbildung/Kurse
https://www.golabs.ch/education
Thu, 28 Mar 2024 22:34:36 +00005b69c4e4-ed53-11ee-8c11-005056bb85fbSoftware Engineering
https://www.golabs.ch/engineering
Thu, 28 Mar 2024 22:34:36 +00005b69c588-ed53-11ee-8c11-005056bb85fbFreelancer
https://www.golabs.ch/freelancer
Thu, 28 Mar 2024 22:34:36 +00005b69c624-ed53-11ee-8c11-005056bb85fbImpressum
https://www.golabs.ch/impressum
Thu, 28 Mar 2024 22:34:36 +00005b69c6cd-ed53-11ee-8c11-005056bb85fbKursleiter
https://www.golabs.ch/kursleiter
Thu, 28 Mar 2024 22:34:36 +00005b69c769-ed53-11ee-8c11-005056bb85fbNetzwerk
https://www.golabs.ch/network
Thu, 28 Mar 2024 22:34:36 +00005b69c80d-ed53-11ee-8c11-005056bb85fbReferenzen
https://www.golabs.ch/references
Thu, 28 Mar 2024 22:34:36 +00005b69c8a2-ed53-11ee-8c11-005056bb85fbSitemap
https://www.golabs.ch/sitemap
Thu, 28 Mar 2024 22:34:36 +00005b69c939-ed53-11ee-8c11-005056bb85fbTools
https://www.golabs.ch/tools
Thu, 28 Mar 2024 22:34:36 +00005b69c9d5-ed53-11ee-8c11-005056bb85fbVision
https://www.golabs.ch/vision
Thu, 28 Mar 2024 22:34:36 +00005b69ca6d-ed53-11ee-8c11-005056bb85fb