{"id":193,"date":"2024-02-01T21:37:23","date_gmt":"2024-02-01T20:37:23","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=193"},"modified":"2024-02-13T21:38:51","modified_gmt":"2024-02-13T20:38:51","slug":"die-requestparam-annotation-in-spring-webanwendungen","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=193","title":{"rendered":"Die @RequestParam-Annotation in Spring-Webanwendungen"},"content":{"rendered":"\n<p>Spring, das weitverbreitete Framework f\u00fcr die Entwicklung von Java-Anwendungen, bietet eine Vielzahl von Funktionen und Annotationen, um die Entwicklung effizienter und wartbarer Software zu erleichtern. Eine dieser n\u00fctzlichen Annotationen ist <code>@RequestParam<\/code>, die es erm\u00f6glicht, Parameter direkt aus der URL oder dem HTTP-Request zu extrahieren. In diesem Artikel werden wir uns eingehend mit der Verwendung und den Vorteilen dieser Annotation in Spring auseinandersetzen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist die @RequestParam-Annotation?<\/h2>\n\n\n\n<p>Die <code>@RequestParam<\/code>-Annotation ist eine von Spring bereitgestellte Methode, um Parameter aus einer HTTP-Anfrage zu extrahieren, insbesondere aus der URL. Sie wird h\u00e4ufig in Spring MVC-Controllern verwendet, um Werte aus einer Anfrage zu lesen und diese Werte dann in den Methoden des Controllers zu verwenden.<\/p>\n\n\n\n<p>Hier ist ein einfaches Beispiel, wie die <code>@RequestParam<\/code>-Annotation verwendet werden kann:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">@RestController\n@RequestMapping(<span class=\"hljs-string\">\"\/api\/books\"<\/span>)\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">BookController<\/span> <\/span>{\n\n    @GetMapping(<span class=\"hljs-string\">\"\/find\"<\/span>)\n    public ResponseEntity&lt;<span class=\"hljs-built_in\">String<\/span>&gt; findBook(@RequestParam <span class=\"hljs-built_in\">String<\/span> title) {\n        <span class=\"hljs-comment\">\/\/ Logik zur Buchsuche basierend auf dem Titel<\/span>\n        <span class=\"hljs-keyword\">return<\/span> ResponseEntity.ok(<span class=\"hljs-string\">\"Buch gefunden: \"<\/span> + title);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird die <code>findBook<\/code>-Methode mit einem Parameter <code>title<\/code> markiert, der mit dem Wert des URL-Parameters &#8222;title&#8220; \u00fcbereinstimmt. Wenn die URL beispielsweise <code>\/api\/books\/find?title=Spring<\/code> lautet, wird die <code>title<\/code>-Variable in der Methode den Wert &#8222;Spring&#8220; haben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verwendung von @RequestParam mit verschiedenen Parametertypen<\/h2>\n\n\n\n<p>Die <code>@RequestParam<\/code>-Annotation kann mit verschiedenen Parametertypen verwendet werden, nicht nur mit einfachen <code>String<\/code>-Parametern. Hier sind einige Beispiele:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Einfache Parameter:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">@GetMapping(<span class=\"hljs-string\">\"\/example\"<\/span>)\npublic ResponseEntity&lt;<span class=\"hljs-built_in\">String<\/span>&gt; example(@RequestParam <span class=\"hljs-built_in\">String<\/span> name, @RequestParam int age) {\n    <span class=\"hljs-comment\">\/\/ Logik, die name und age verwendet<\/span>\n    <span class=\"hljs-keyword\">return<\/span> ResponseEntity.ok(<span class=\"hljs-string\">\"Name: \"<\/span> + name + <span class=\"hljs-string\">\", Alter: \"<\/span> + age);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">2. Optionale Parameter:<\/h3>\n\n\n\n<p>Manchmal sind Parameter in einer URL optional. In solchen F\u00e4llen k\u00f6nnen Sie den <code>required<\/code>-Parameter der <code>@RequestParam<\/code>-Annotation verwenden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">@GetMapping(<span class=\"hljs-string\">\"\/optional\"<\/span>)\npublic ResponseEntity&lt;<span class=\"hljs-built_in\">String<\/span>&gt; optionalExample(@RequestParam(required = <span class=\"hljs-literal\">false<\/span>) <span class=\"hljs-built_in\">String<\/span> city) {\n    <span class=\"hljs-keyword\">if<\/span> (city != <span class=\"hljs-literal\">null<\/span>) {\n        <span class=\"hljs-keyword\">return<\/span> ResponseEntity.ok(<span class=\"hljs-string\">\"Stadt: \"<\/span> + city);\n    } <span class=\"hljs-keyword\">else<\/span> {\n        <span class=\"hljs-keyword\">return<\/span> ResponseEntity.ok(<span class=\"hljs-string\">\"Stadt nicht angegeben\"<\/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\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3. Konvertierung von Parametern:<\/h3>\n\n\n\n<p>Spring versucht automatisch, den Wert des URL-Parameters in den gew\u00fcnschten Parametertyp zu konvertieren. Hier ein Beispiel mit einem <code>LocalDate<\/code>-Parameter:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">@GetMapping(<span class=\"hljs-string\">\"\/date\"<\/span>)\npublic ResponseEntity&lt;<span class=\"hljs-built_in\">String<\/span>&gt; dateExample(@RequestParam LocalDate date) {\n    <span class=\"hljs-comment\">\/\/ Logik, die das LocalDate verwendet<\/span>\n    <span class=\"hljs-keyword\">return<\/span> ResponseEntity.ok(<span class=\"hljs-string\">\"Datum: \"<\/span> + date);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Fall wird Spring versuchen, den Wert des URL-Parameters in ein <code>LocalDate<\/code>-Objekt zu konvertieren, sofern m\u00f6glich.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mehrere Parameter mit @RequestParam<\/h2>\n\n\n\n<p>Sie k\u00f6nnen mehrere <code>@RequestParam<\/code>-Annotationen in einer Methode verwenden, um mehrere Parameter aus der URL zu extrahieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">@GetMapping(<span class=\"hljs-string\">\"\/multiple\"<\/span>)\npublic ResponseEntity&lt;<span class=\"hljs-built_in\">String<\/span>&gt; multipleParams(\n        @RequestParam <span class=\"hljs-built_in\">String<\/span> username,\n        @RequestParam int age,\n        @RequestParam(required = <span class=\"hljs-literal\">false<\/span>) <span class=\"hljs-built_in\">String<\/span> city) {\n    <span class=\"hljs-comment\">\/\/ Logik, die username, age und city verwendet<\/span>\n    <span class=\"hljs-keyword\">return<\/span> ResponseEntity.ok(<span class=\"hljs-string\">\"Username: \"<\/span> + username + <span class=\"hljs-string\">\", Alter: \"<\/span> + age + <span class=\"hljs-string\">\", Stadt: \"<\/span> + (city != <span class=\"hljs-literal\">null<\/span> ? city : <span class=\"hljs-string\">\"nicht angegeben\"<\/span>));\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Verwendung von @RequestParam mit anderen Annotationen<\/h2>\n\n\n\n<p>Die <code>@RequestParam<\/code>-Annotation kann auch mit anderen Spring-Annotations wie <code>@PathVariable<\/code> und <code>@RequestBody<\/code> kombiniert werden, um komplexe Anforderungen zu erf\u00fcllen. Hier ist ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">@GetMapping(<span class=\"hljs-string\">\"\/combined\/{id}\"<\/span>)\npublic ResponseEntity&lt;<span class=\"hljs-built_in\">String<\/span>&gt; combinedExample(\n        @PathVariable Long id,\n        @RequestParam <span class=\"hljs-built_in\">String<\/span> username,\n        @RequestBody BookRequest bookRequest) {\n    <span class=\"hljs-comment\">\/\/ Logik, die id, username und bookRequest verwendet<\/span>\n    <span class=\"hljs-keyword\">return<\/span> ResponseEntity.ok(<span class=\"hljs-string\">\"ID: \"<\/span> + id + <span class=\"hljs-string\">\", Username: \"<\/span> + username + <span class=\"hljs-string\">\", Buchtitel: \"<\/span> + bookRequest.getTitle());\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird die <code>@PathVariable<\/code>-Annotation verwendet, um die <code>id<\/code> aus dem Pfad zu extrahieren, die <code>@RequestParam<\/code>-Annotation f\u00fcr den <code>username<\/code> aus der URL und die <code>@RequestBody<\/code>-Annotation f\u00fcr das <code>BookRequest<\/code>-Objekt aus dem Anfragek\u00f6rper.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Validierung von @RequestParam<\/h2>\n\n\n\n<p>Spring bietet auch M\u00f6glichkeiten zur Validierung von Parametern, die mit <code>@RequestParam<\/code> extrahiert werden. Sie k\u00f6nnen zum Beispiel die <code>@RequestParam<\/code>-Annotation mit der <code>@Valid<\/code>-Annotation verwenden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">@GetMapping(<span class=\"hljs-string\">\"\/validate\"<\/span>)\npublic ResponseEntity&lt;<span class=\"hljs-built_in\">String<\/span>&gt; validateExample(@RequestParam @Validated <span class=\"hljs-built_in\">String<\/span> email) {\n    <span class=\"hljs-comment\">\/\/ Logik, die das validierte email verwendet<\/span>\n    <span class=\"hljs-keyword\">return<\/span> ResponseEntity.ok(<span class=\"hljs-string\">\"E-Mail: \"<\/span> + email);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Durch Hinzuf\u00fcgen der <code>@Validated<\/code>-Annotation wird Spring versuchen, die Validierung f\u00fcr den Parameter durchzuf\u00fchren. Sie k\u00f6nnen auch benutzerdefinierte Validierungen mithilfe von Validierungsgruppen oder Constraints hinzuf\u00fcgen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Die <code>@RequestParam<\/code>-Annotation in Spring bietet eine einfache und effektive M\u00f6glichkeit, Parameter aus HTTP-Anfragen zu extrahieren. Durch die Unterst\u00fctzung verschiedener Parametertypen, optionale Parameter und Validierungsoptionen erm\u00f6glicht sie eine flexible Handhabung von Anfragen in Spring MVC-Controllern. Die Kombination mit anderen Annotationsm\u00f6glichkeiten er\u00f6ffnet zus\u00e4tzliche M\u00f6glichkeiten f\u00fcr die Verarbeitung komplexerer Szenarien. Insgesamt tr\u00e4gt die <code>@RequestParam<\/code>-Annotation zur Verbesserung der Lesbarkeit und Wartbarkeit von Spring-Anwendungen bei, indem sie die direkte Verkn\u00fcpfung von Anfragen mit den Methodenparametern im Controller erm\u00f6glicht.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring, das weitverbreitete Framework f\u00fcr die Entwicklung von Java-Anwendungen, bietet eine Vielzahl von Funktionen und Annotationen, um die Entwicklung effizienter und wartbarer Software zu erleichtern. Eine dieser n\u00fctzlichen Annotationen ist @RequestParam, die es erm\u00f6glicht, Parameter direkt aus der URL oder dem HTTP-Request zu extrahieren. In diesem Artikel werden wir uns eingehend mit der Verwendung und [&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-193","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\/193","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=193"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/193\/revisions"}],"predecessor-version":[{"id":194,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/193\/revisions\/194"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}