אביב הערה @ RequestParam

1. סקירה כללית

במדריך מהיר זה נחקור את האביב @RequestParam ביאור ותכונותיו.

במילים פשוטות, אנחנו יכולים להשתמש @RequestParam כדי לחלץ פרמטרים של שאילתות, פרמטרים של טופס ואפילו קבצים מהבקשה.

2. מיפוי פשוט

בואו נגיד שיש לנו נקודת סיום / api / foos שלוקח פרמטר שאילתה שנקרא תְעוּדַת זֶהוּת:

@GetMapping ("/ api / foos") @ResponseBody מחרוזת פומבית getFoos (@RequestParam מזהה מחרוזת) {return "ID:" + id; }

בדוגמה זו השתמשנו @RequestParam כדי לחלץ את תְעוּדַת זֶהוּת פרמטר שאילתה.

בקשה של GET פשוטה תפעל getFoos:

// localhost: 8080 / api / foos? id = abc ---- ID: abc

הַבָּא, בואו נסתכל על תכונות ההערה: שֵׁם, ערך, נדרש, ו ערך ברירת מחדל.

3. ציון שם הפרמטר של הבקשה

בדוגמה הקודמת, גם שם המשתנה וגם שם הפרמטר זהים.

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

לְמַרְבֶּה הַמַזָל, אנחנו יכולים להגדיר את @RequestParam שם באמצעות שֵׁם תְכוּנָה:

@PostMapping ("/ api / foos") @ResponseBody מחרוזת ציבורית addFoo (@RequestParam (name = "id") מחרוזת fooId, @RequestParam שם מחרוזת) {return "ID:" + fooId + "שם:" + שם; }

אנחנו יכולים גם לעשות @RequestParam (value = “id”) או רק @RequestParam ("מזהה").

4. פרמטרים לבקשות אופציונליים

פרמטרים של שיטה עם הערה עם @RequestParam נדרשים כברירת מחדל.

פירוש הדבר שאם הפרמטר אינו קיים בבקשה, נקבל שגיאה:

GET / api / foos HTTP / 1.1 ----- 400 בקשה רעה נדרשת פרמטר מחרוזת 'id' אינו קיים

אנחנו יכולים להגדיר את שלנו @RequestParam כדי להיות אופציונלי, עם זאת נדרש תְכוּנָה:

@GetMapping ("/ api / foos") @ResponseBody מחרוזת ציבורית getFoos (@RequestParam (חובה = שקר) מזהה מחרוזת) {return "ID:" + id; }

במקרה זה, שניהם:

// localhost: 8080 / api / foos? id = abc ---- ID: abc

ו

// localhost: 8080 / api / foos ---- מזהה: null

יפעיל נכון את השיטה.

כאשר הפרמטר לא צוין, פרמטר השיטה חייב ריק.

4.1. באמצעות Java 8 אופציונאלי

לחלופין, אנו יכולים לעטוף את הפרמטר ב אופציונאלי:

@GetMapping ("/ api / foos") @ResponseBody ציבורי מחרוזת getFoos (@RequestParam מזהה אופציונלי) {return "ID:" + id.orElseGet (() -> "לא מסופק"); }

במקרה הזה, אנחנו לא צריכים לציין את נדרש תְכוּנָה.

וערך ברירת המחדל ישמש אם פרמטר הבקשה אינו מסופק:

// localhost: 8080 / api / foos ---- מזהה: לא מסופק

5. ערך ברירת מחדל לפרמטר הבקשה

אנו יכולים גם להגדיר ערך ברירת מחדל ל- @RequestParam באמצעות ערך ברירת מחדל תְכוּנָה:

@GetMapping ("/ api / foos") @ResponseBody מחרוזת ציבורית getFoos (@RequestParam (defaultValue = "test") מזהה מחרוזת) {return "ID:" + id; }

זה כמו חובה = שקר, בכך שהמשתמש כבר לא צריך לספק את הפרמטר:

// localhost: 8080 / api / foos ---- מזהה: מבחן

אמנם, אנחנו עדיין בסדר לספק את זה:

// localhost: 8080 / api / foos? id = abc ---- ID: abc

שים לב שכאשר אנו מגדירים את ערך ברירת מחדל תְכוּנָה, נדרש אכן מוגדר ל שֶׁקֶר.

6. מיפוי כל הפרמטרים

אנו יכולים גם לקבל מספר פרמטרים מבלי להגדיר את שמותיהם או ספור פשוט על ידי שימוש ב- מַפָּה:

@PostMapping ("/ api / foos") @ResponseBody public String updateFoos (@RequestParam מפה allParams) {return "הפרמטרים הם" + allParams.entrySet (); }

אשר ישקף את כל הפרמטרים שנשלחו:

תלתל -X POST -F 'שם = abc' -F 'id = 123' // localhost: 8080 / api / foos ----- הפרמטרים הם {[name = abc], [id = 123]}

7. מיפוי פרמטר רב-ערכי

בודד @RequestParam יכול להיות בעל ערכים מרובים:

@GetMapping ("/ api / foos") @ResponseBody ציבורי מחרוזת getFoos (מזהה רשימת @RequestParam) {מזהים "להחזיר הם" + id; }

ו- MVC באביב ימפה תיחום פסיקים תְעוּדַת זֶהוּת פָּרָמֶטֶר:

// localhost: 8080 / api / foos? id = 1,2,3 ---- מזהים הם [1,2,3]

או רשימה של נפרדים תְעוּדַת זֶהוּת פרמטרים:

// localhost: 8080 / api / foos? id = 1 & id = 2 ---- תעודות זהות הן [1,2]

8. מסקנה

במאמר זה למדנו כיצד להשתמש @ RequestParam.

את קוד המקור המלא לדוגמאות ניתן למצוא בפרויקט GitHub.


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