{"id":189,"date":"2024-01-28T21:31:36","date_gmt":"2024-01-28T20:31:36","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=189"},"modified":"2024-02-13T21:37:10","modified_gmt":"2024-02-13T20:37:10","slug":"die-requestmapping-annotation-in-spring-webanwendungen","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=189","title":{"rendered":"Die @RequestMapping-Annotation in Spring-Webanwendungen"},"content":{"rendered":"\n<p>Spring, das weit verbreitete Java-Framework f\u00fcr die Entwicklung von Enterprise-Anwendungen, bietet eine Vielzahl von Funktionen, um die Entwicklung von Webanwendungen zu erleichtern. Eine entscheidende Rolle spielt dabei die <code>@RequestMapping<\/code>-Annotation, die eine zentrale Rolle bei der Verkn\u00fcpfung von HTTP-Anfragen mit den entsprechenden Methoden in Spring-Controllern spielt. In diesem Artikel werden wir uns ausf\u00fchrlich mit der <code>@RequestMapping<\/code>-Annotation besch\u00e4ftigen, ihre Funktionen, Anwendungsf\u00e4lle und bew\u00e4hrte Praktiken untersuchen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Grundlagen der @RequestMapping-Annotation<\/h2>\n\n\n\n<p>Die <code>@RequestMapping<\/code>-Annotation ist eine der fundamentalen Annotationen in Spring, die es erm\u00f6glicht, HTTP-Anfragen auf Methoden von Spring-Controllern abzubilden. Sie kann auf Klassenebene (f\u00fcr den gesamten Controller) oder auf Methodenebene (f\u00fcr spezifische Endpunkte) angewendet werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Anwendung auf Klassenebene<\/h3>\n\n\n\n<p>Wenn <code>@RequestMapping<\/code> auf Klassenebene angewendet wird, definiert sie den Basispfad f\u00fcr alle in diesem Controller definierten Endpunkte. Hier ist ein einfaches Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Controller\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductController<\/span> <\/span>{\n    <span class=\"hljs-comment\">\/\/ Controller methods will be mapped under \"\/api\/products\"<\/span>\n    <span class=\"hljs-comment\">\/\/ e.g., \"\/api\/products\/getProduct\"<\/span>\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Anwendung auf Methodenebene<\/h3>\n\n\n\n<p>Wenn die <code>@RequestMapping<\/code>-Annotation auf Methodenebene angewendet wird, erfolgt eine weitere Spezifizierung des Endpunkts unter Ber\u00fccksichtigung des Basispfads auf Klassenebene. Hier ist ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Controller\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductController<\/span> <\/span>{\n\n    @RequestMapping(<span class=\"hljs-string\">\"\/getProduct\"<\/span>)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;Product&gt; getProduct() {\n        <span class=\"hljs-comment\">\/\/ Logic to retrieve product<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel w\u00e4re der vollst\u00e4ndige Endpunkt f\u00fcr die <code>getProduct<\/code>-Methode <code>\/api\/products\/getProduct<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verwendung von @RequestMapping f\u00fcr verschiedene HTTP-Methoden<\/h2>\n\n\n\n<p>Eine der St\u00e4rken der <code>@RequestMapping<\/code>-Annotation liegt in ihrer Flexibilit\u00e4t bei der Zuordnung von HTTP-Anfragen zu verschiedenen Methoden, je nach der verwendeten HTTP-Methode. Dies wird durch die <code>method<\/code>-Eigenschaft der Annotation erm\u00f6glicht.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Controller\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductController<\/span> <\/span>{\n\n    @RequestMapping(value = <span class=\"hljs-string\">\"\/getProduct\"<\/span>, method = RequestMethod.GET)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;Product&gt; getProduct() {\n        <span class=\"hljs-comment\">\/\/ Logic to retrieve product<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n\n    @RequestMapping(value = <span class=\"hljs-string\">\"\/addProduct\"<\/span>, method = RequestMethod.POST)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;String&gt; addProduct(@RequestBody Product product) {\n        <span class=\"hljs-comment\">\/\/ Logic to add a new product<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird die <code>getProduct<\/code>-Methode auf HTTP-GET-Anfragen und die <code>addProduct<\/code>-Methode auf HTTP-POST-Anfragen abgebildet. Durch die pr\u00e4zise Steuerung der HTTP-Methoden k\u00f6nnen Entwickler die Semantik ihrer Endpunkte klar definieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pfadvariablen und Platzhalter<\/h2>\n\n\n\n<p>Ein weiteres leistungsstarkes Feature der <code>@RequestMapping<\/code>-Annotation ist die M\u00f6glichkeit, Pfadvariablen und Platzhalter in den Endpunkt-URI einzuf\u00fcgen. Dies erm\u00f6glicht die Verarbeitung von dynamischen Daten in den Anfragen.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Controller\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductController<\/span> <\/span>{\n\n    @RequestMapping(<span class=\"hljs-string\">\"\/getProduct\/{productId}\"<\/span>)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;Product&gt; getProductById(@PathVariable Long productId) {\n        <span class=\"hljs-comment\">\/\/ Logic to retrieve product by ID<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n\n    @RequestMapping(<span class=\"hljs-string\">\"\/getProducts\/{category}\"<\/span>)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;<span class=\"hljs-keyword\">List<\/span>&lt;Product&gt;&gt; getProductsByCategory(@PathVariable String category) {\n        <span class=\"hljs-comment\">\/\/ Logic to retrieve products by category<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel werden die <code>{productId}<\/code> und <code>{category}<\/code> als Platzhalter f\u00fcr dynamische Werte in der URI verwendet. Spring wird automatisch die Werte extrahieren und an die entsprechenden Parameter der Methoden \u00fcbergeben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Request Mapping mit Consumes und Produces<\/h2>\n\n\n\n<p>Die <code>@RequestMapping<\/code>-Annotation erm\u00f6glicht auch die Definition von <code>consumes<\/code> und <code>produces<\/code>, um die unterst\u00fctzten Medientypen f\u00fcr Anfragen und Antworten zu steuern. Dies ist besonders n\u00fctzlich, wenn die Anwendung mit verschiedenen Datenformaten arbeitet, wie JSON oder XML.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Controller\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductController<\/span> <\/span>{\n\n    @RequestMapping(value = <span class=\"hljs-string\">\"\/addProduct\"<\/span>, method = RequestMethod.POST, consumes = <span class=\"hljs-string\">\"application\/json\"<\/span>)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;String&gt; addProduct(@RequestBody Product product) {\n        <span class=\"hljs-comment\">\/\/ Logic to add a new product<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n\n    @RequestMapping(value = <span class=\"hljs-string\">\"\/getProduct\"<\/span>, method = RequestMethod.GET, produces = <span class=\"hljs-string\">\"application\/json\"<\/span>)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;Product&gt; getProduct() {\n        <span class=\"hljs-comment\">\/\/ Logic to retrieve product<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird die <code>addProduct<\/code>-Methode nur Anfragen akzeptieren, deren Medientyp <code>application\/json<\/code> ist. Die <code>getProduct<\/code>-Methode wird nur JSON als Antwortproduzieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kombination von Pfaden und HTTP-Methoden<\/h2>\n\n\n\n<p>Die <code>@RequestMapping<\/code>-Annotation erm\u00f6glicht auch die Kombination von verschiedenen Pfaden und HTTP-Methoden in einer einzigen Methode. Dies ist n\u00fctzlich, wenn mehrere Endpunkte \u00e4hnliche Logik teilen.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Controller\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductController<\/span> <\/span>{\n\n    @RequestMapping(value = {<span class=\"hljs-string\">\"\/getProduct\"<\/span>, <span class=\"hljs-string\">\"\/fetchProduct\"<\/span>}, method = RequestMethod.GET)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;Product&gt; getProduct() {\n        <span class=\"hljs-comment\">\/\/ Logic to retrieve product<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird die <code>getProduct<\/code>-Methode auf die Endpunkte <code>\/api\/products\/getProduct<\/code> und <code>\/api\/products\/fetchProduct<\/code> gemappt, und beide verwenden die HTTP-GET-Methode.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Anwendungsf\u00e4lle und bew\u00e4hrte Praktiken<\/h2>\n\n\n\n<p>Die <code>@RequestMapping<\/code>-Annotation bietet eine breite Palette von Funktionen, die in verschiedenen Anwendungsf\u00e4llen eingesetzt werden k\u00f6nnen. Hier sind einige bew\u00e4hrte Praktiken und h\u00e4ufige Anwendungsf\u00e4lle:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. RESTful APIs<\/h3>\n\n\n\n<p>F\u00fcr die Entwicklung von RESTful APIs ist die <code>@RequestMapping<\/code>-Annotation unerl\u00e4sslich. Durch die klare Definition von Pfaden, HTTP-Methoden und Unterst\u00fctzung f\u00fcr Platzhalter k\u00f6nnen Entwickler RESTful Endpunkte mit minimalem Codeaufwand erstellen.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@RestController\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductController<\/span> <\/span>{\n\n    @GetMapping(<span class=\"hljs-string\">\"\/{productId}\"<\/span>)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;Product&gt; getProductById(@PathVariable Long productId) {\n        <span class=\"hljs-comment\">\/\/ Logic to retrieve product by ID<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n\n    @PostMapping\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;String&gt; addProduct(@RequestBody Product product) {\n        <span class=\"hljs-comment\">\/\/ Logic to add a new product<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">2. Versionierung von APIs<\/h3>\n\n\n\n<p>Die <code>@RequestMapping<\/code>-Annotation kann auch f\u00fcr die Versionierung von APIs verwendet werden, indem der API-Version als Teil des Pfades angegeben wird.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@RestController\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/v1\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductControllerV1<\/span> <\/span>{\n\n    <span class=\"hljs-comment\">\/\/ Endpoint implementations for version 1<\/span>\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n}\n\n@RestController\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/v2\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductControllerV2<\/span> <\/span>{\n\n    <span class=\"hljs-comment\">\/\/ Endpoint implementations for version 2<\/span>\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3. Internationalisierung<\/h3>\n\n\n\n<p>F\u00fcr Anwendungen, die mehrsprachige Unterst\u00fctzung ben\u00f6tigen, kann die <code>@RequestMapping<\/code>-Annotation in Verbindung mit Spring MessageSource verwendet werden, um internationale Endpunkte bereitzustellen.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Controller\n@RequestMapping(<span class=\"hljs-string\">\"\/{lang}\/products\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductController<\/span> <\/span>{\n\n    @GetMapping(<span class=\"hljs-string\">\"\/{productId}\"<\/span>)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;Product&gt; getProductById(@PathVariable Long productId) {\n        <span class=\"hljs-comment\">\/\/ Logic to retrieve product by ID<\/span>\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">4. Sicherheit<\/h3>\n\n\n\n<p>Die <code>@RequestMapping<\/code>-Annotation spielt auch eine Rolle bei der Implementierung von Sicherheitsmechanismen in Spring-Anwendungen. Durch die genaue Definition von Endpunkten und Zugriffsrechten k\u00f6nnen Entwickler sicherstellen, dass nur autorisierte Benutzer auf bestimmte Ressourcen zugreifen k\u00f6nnen.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@RestController\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/admin\"<\/span>)\n@RolesAllowed(<span class=\"hljs-string\">\"ROLE_ADMIN\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AdminController<\/span> <\/span>{\n\n    <span class=\"hljs-comment\">\/\/ Admin-only endpoints<\/span>\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Die <code>@RequestMapping<\/code>-Annotation ist ein m\u00e4chtiges Werkzeug in der Welt der Spring-Frameworks, das Entwicklern die Flexibilit\u00e4t und Kontrolle \u00fcber ihre Endpunkte bietet. Durch die Kombination von Pfaden, HTTP-Methoden, Platzhaltern und anderen Eigenschaften erm\u00f6glicht es die einfache Definition von RESTful APIs, Versionierung, Internationalisierung und Sicherheit. Bei der Entwicklung von Spring-Anwendungen ist es entscheidend, die Funktionen und M\u00f6glichkeiten dieser Annotation zu verstehen, um effiziente und gut strukturierte Webanwendungen zu erstellen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring, das weit verbreitete Java-Framework f\u00fcr die Entwicklung von Enterprise-Anwendungen, bietet eine Vielzahl von Funktionen, um die Entwicklung von Webanwendungen zu erleichtern. Eine entscheidende Rolle spielt dabei die @RequestMapping-Annotation, die eine zentrale Rolle bei der Verkn\u00fcpfung von HTTP-Anfragen mit den entsprechenden Methoden in Spring-Controllern spielt. In diesem Artikel werden wir uns ausf\u00fchrlich mit der @RequestMapping-Annotation [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-189","post","type-post","status-publish","format-standard","hentry","category-spring"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=189"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/189\/revisions"}],"predecessor-version":[{"id":190,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/189\/revisions\/190"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}