מדריך ל- UriComponentsBuilder באביב

1. הקדמה

במדריך זה אנו מתמקדים באביב UriComponentsBuilder. באופן ספציפי יותר, נתאר דוגמאות שונות ליישום מעשי.

הבנאי עובד בשיתוף עם UriComponents class - מיכל בלתי משתנה לרכיבי URI.

חדש UriComponentsBuilder הכיתה עוזרת ליצור UriComponents מקרים על ידי מתן שליטה מדויקת בכל ההיבטים של הכנת URI כולל בנייה, הרחבה ממשתני תבניות וקידוד.

2. תלות Maven

על מנת להשתמש בבונה, עלינו לכלול את החלק הבא ב תלות שלנו pom.xml:

 org.springframework spring-web 5.2.2.RELEASE 

הגרסה האחרונה תוכל למצוא כאן.

תלות זו מכסה רק את רשת האביב ולכן אל תשכח להוסיף אביב-הקשר ליישום אינטרנט מלא.

אנחנו כמובן צריכים גם להגדיר רישום רישום לפרויקט - עוד על כך כאן.

3. השתמש במקרים

ישנם מקרי שימוש מעשיים רבים עבור UriComponentsBuilder, החל מקידוד קונטקסטואלי של תווים שאינם מורשים ברכיב ה- URI המתאים, וכלה בהחלפת חלקים מכתובת האתר באופן דינמי.

אחד היתרונות הגדולים ביותר של UriComponentsBuilder האם זה אנחנו יכולים להזרים את זה ישר לשיטת בקר:

@RequestMapping (method = RequestMethod.POST) ResponseEntity public createCustomer (בונה UriComponentsBuilder) {// יישום}

נתחיל לתאר דוגמאות שימושיות אחת אחת. נשתמש במסגרת JUnit כדי לבדוק את היישומים שלנו באופן מיידי.

3.1. בניית URI

נתחיל עם הפשוטה ביותר. אנחנו רוצים להשתמש UriComponentsBuilder רק כדי ליצור קישור פשוט:

@Test ציבורי בטל מבנהUri () {UriComponents uriComponents = UriComponentsBuilder.newInstance () .scheme ("http"). Host ("www.baeldung.com"). Path ("/ junit-5"). Build (); assertEquals ("/ junit-5", uriComponents.toUriString ()); }

כפי שנראה, יצרנו מופע חדש של UriComponentsBuilderואז סיפקנו את סוג התוכנית, המארח ונתיב ליעד הבקשה.

דוגמה פשוטה זו עשויה להיות שימושית כאשר אנו רוצים לבצע הפניה מחדש לחלק / קישור אחר באתר האינטרנט שלנו.

3.2. בניית URI מקודד

בנוסף ליצירת קישור פשוט, אולי נרצה לקודד את התוצאה הסופית. בואו נראה את זה בפועל:

@Test ציבורי מבטל ריק UriEncoded () {UriComponents uriComponents = UriComponentsBuilder.newInstance () .scheme ("http"). Host ("www.baeldung.com"). Path ("/ junit 5"). Build (). קידוד ( ); assertEquals ("/ junit% 205", uriComponents.toUriString ()); }

ההבדל בדוגמה זו הוא שאנחנו רוצים להוסיף רווח בין המילה צומת ומספר 5. בהתאם ל- RFC 3986, זה לא יהיה אפשרי. עלינו לקודד את הקישור בכדי להשיג את התוצאה התקפה, באמצעות לְהַצְפִּין() שיטה.

3.3. בניית URI מתבנית

תבניות URI מותרות ברוב המרכיבים של URI אך ערכן מוגבל לאלמנט מסוים אותו אנו מציינים כתבנית. בואו נראה את הדוגמה כדי להבהיר:

@Test ציבורי ריק בטוןUriFromTemplate () {UriComponents uriComponents = UriComponentsBuilder.newInstance () .scheme ("http"). Host ("www.baeldung.com"). Path ("/ {article-name}") .buildAndExpand (" צומת -5 "); assertEquals ("/ junit-5", uriComponents.toUriString ()); }

ההבדל בדוגמה זו הוא באופן בו אנו מצהירים על הדרך וכיצד אנו בונים את ה- URI הסופי. תבנית שתוחלף במילות מפתח מסומנת בסוגריים - {…}, בתוך ה נָתִיב() שיטה. מילת המפתח המשמשת ליצירת הקישור הסופי משמשת בשיטה הנקובה buildAndExpand (...).

שים לב, ייתכן שיש להחליף יותר ממילת מפתח אחת. כמו כן, הדרך ל- URI יכולה להיות יחסית.

דוגמה זו תועיל מאוד כאשר נרצה להעביר אובייקטים מודל לבקר האביב על בסיסו נבנה URI.

3.4. בניית URI עם פרמטרי שאילתה

מקרה שימושי נוסף הוא יצירת URI עם פרמטרי שאילתה.

אנחנו צריכים להשתמש שאילתא() מ UriComponentsBuilder כדי לציין פרמטרים של שאילתת URI. בואו נראה את הדוגמה הבאה:

@Test ציבורי בטל מבנהUriWithQueryParameter () {UriComponents uriComponents = UriComponentsBuilder.newInstance () .scheme ("http"). Host ("www.google.com") .path ("/"). שאילתה ("q = {keyword} ") .buildAndExpand (" baeldung "); assertEquals ("// www.google.com/?q=baeldung", uriComponents.toUriString ()); }

השאילתה תתווסף לחלק העיקרי של הקישור. אנו יכולים לספק מספר פרמטרים של שאילתות, באמצעות סוגריים {…}. הם יוחלפו במילות מפתח בשיטה הנקובה buildAndExpand (...).

יישום זה של UriComponentsBuilder עשוי לשמש לבניית - למשל - שפת שאילתות עבור REST API.

3.5. הרחבת URI עם ביטויים רגילים

הדוגמה האחרונה היא הצגת מבנה של URI עם אימות regex. נוכל להרחיב את ה- uriComponents רק אם אימות regex יצליח:

@Test ציבורי בטל expandWithRegexVar () {תבנית מחרוזת = "/ myurl / {name: [a-z] {1,5}} / show"; UriComponents uriComponents = UriComponentsBuilder.fromUriString (תבנית) .build (); uriComponents = uriComponents.expand (Collections.singletonMap ("שם", "מבחן")); assertEquals ("/ myurl / test / show", uriComponents.getPath ()); }

בדוגמה הנ"ל, אנו יכולים לראות כי החלק האמצעי של הקישור צריך להכיל אותיות בלבד a-z והאורך בטווח שבין 1-5.

כמו כן, אנו משתמשים singletonMap, להחלפת מילת המפתח שֵׁם עם ערך מִבְחָן.

דוגמה זו שימושית במיוחד כאשר אנו מאפשרים למשתמש לציין קישורים באופן דינמי, אך ברצוננו לספק מעין אבטחה כאשר רק קישורים תקפים פועלים ביישום האינטרנט שלנו.

4. מסקנה

הדרכה זו מציגה דוגמאות שימושיות של UriComponentsBuilder.

היתרונות העיקריים של UriComponentsBuilder הן הגמישות של שימוש במשתני תבניות URI, ואפשרות להזרים אותה ישירות לשיטות Spring Spring.

כל הדוגמאות והתצורות זמינות כאן ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found