Generic REST Endpoint mit Spring Boothttps://www.golabs.ch/blog/springboot/genericrest?&atomFri, 29 Mar 2024 15:00:49 +0000stack.ch
https://stack.ch/
2133dd75-eddd-11ee-8c11-005056bb85fbSimtech AG - Blog - Spring Boot Blogs - Generic REST Endpoint mit Spring Boot
https://www.golabs.ch/blog/springboot/genericrest
2133de78-eddd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 15:00:49 +0000Generic REST Endpoint mit Spring Boot
https://www.golabs.ch/blog/springboot/genericrest
2133df98-eddd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 15:00:49 +0000
https://www.golabs.ch/blog/springboot/genericrest
2133e095-eddd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 15:00:49 +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/blog/springboot/genericrest
2133e2ba-eddd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 15:00:49 +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/blog/springboot/genericrest
2133e6c0-eddd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 15:00:49 +0000Der effektive Endpoint wird über die Subklasse z.B. EchoRestService implementiert:
https://www.golabs.ch/blog/springboot/genericrest
2133e7c4-eddd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 15:00:49 +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/blog/springboot/genericrest
2133eaae-eddd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 15:00:49 +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/blog/springboot/genericrest
2133ebc3-eddd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 15:00:49 +0000War dieser Blog für Sie wertvoll. Wir danken für jede Anregung und FeedbackÜber uns
https://www.golabs.ch/about
Fri, 29 Mar 2024 15:00:49 +00002133ee0f-eddd-11ee-8c11-005056bb85fbAktuell
https://www.golabs.ch/
Fri, 29 Mar 2024 15:00:49 +00002133eebf-eddd-11ee-8c11-005056bb85fbAGB
https://www.golabs.ch/agb
Fri, 29 Mar 2024 15:00:49 +00002133ef5a-eddd-11ee-8c11-005056bb85fbBildungswege
https://www.golabs.ch/bildungswege
Fri, 29 Mar 2024 15:00:49 +00002133eff0-eddd-11ee-8c11-005056bb85fbBlog
https://www.golabs.ch/blog
Fri, 29 Mar 2024 15:00:49 +00002133f082-eddd-11ee-8c11-005056bb85fbRufen Sie mich an
https://www.golabs.ch/callus
Fri, 29 Mar 2024 15:00:49 +00002133f114-eddd-11ee-8c11-005056bb85fbCharts
https://www.golabs.ch/charts
Fri, 29 Mar 2024 15:00:49 +00002133f1a3-eddd-11ee-8c11-005056bb85fbConsulting
https://www.golabs.ch/consulting
Fri, 29 Mar 2024 15:00:49 +00002133f287-eddd-11ee-8c11-005056bb85fbKontakt
https://www.golabs.ch/contact
Fri, 29 Mar 2024 15:00:49 +00002133f32e-eddd-11ee-8c11-005056bb85fbAusbildung/Kurse
https://www.golabs.ch/education
Fri, 29 Mar 2024 15:00:49 +00002133f3c5-eddd-11ee-8c11-005056bb85fbSoftware Engineering
https://www.golabs.ch/engineering
Fri, 29 Mar 2024 15:00:49 +00002133f45a-eddd-11ee-8c11-005056bb85fbFreelancer
https://www.golabs.ch/freelancer
Fri, 29 Mar 2024 15:00:49 +00002133f4e9-eddd-11ee-8c11-005056bb85fbImpressum
https://www.golabs.ch/impressum
Fri, 29 Mar 2024 15:00:49 +00002133f575-eddd-11ee-8c11-005056bb85fbKursleiter
https://www.golabs.ch/kursleiter
Fri, 29 Mar 2024 15:00:49 +00002133f603-eddd-11ee-8c11-005056bb85fbNetzwerk
https://www.golabs.ch/network
Fri, 29 Mar 2024 15:00:49 +00002133f68a-eddd-11ee-8c11-005056bb85fbReferenzen
https://www.golabs.ch/references
Fri, 29 Mar 2024 15:00:49 +00002133f72e-eddd-11ee-8c11-005056bb85fbSitemap
https://www.golabs.ch/sitemap
Fri, 29 Mar 2024 15:00:49 +00002133f7c1-eddd-11ee-8c11-005056bb85fbTools
https://www.golabs.ch/tools
Fri, 29 Mar 2024 15:00:49 +00002133f85d-eddd-11ee-8c11-005056bb85fbVision
https://www.golabs.ch/vision
Fri, 29 Mar 2024 15:00:49 +00002133f8f4-eddd-11ee-8c11-005056bb85fb