最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot接口獲取參數(shù)的常用注解詳解

 更新時間:2026年01月31日 11:20:50   作者:一線大碼  
SpringBoot 接口獲取參數(shù)的注解非常豐富,這篇文章主要為大家詳細介紹了一些常用參數(shù)注解的使用,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下

SpringBoot 接口獲取參數(shù)的注解非常豐富,下面詳細介紹一下常用的參數(shù)注解:

1、URL 路徑參數(shù)

@PathVariable

獲取 URL 路徑中的參數(shù)

// 獲取單個參數(shù)
@GetMapping("/user/{id}")
public User getUserById(@PathVariable Long id) {
    return userService.findById(id);
}

// 獲取多個參數(shù)
@GetMapping("/user/{id}/post/{postId}")
public String getInfo(
    @PathVariable Long id,
    @PathVariable Long postId
) {
    // ...
}

// 參數(shù)名不一致時指定
@GetMapping("/user/{userId}")
public User getUser(@PathVariable("userId") Long id) {
    return userService.findById(id);
}

// 獲取所有路徑變量(Map形式)
@GetMapping("/user/{id}/post/{postId}")
public String getInfo(@PathVariable Map<String, String> pathVariables) {
    return pathVariables.get("id");
}
// URL路徑中的時間參數(shù)
@GetMapping("/events/date/{date}")
public List<Event> getEventsByPathDate(
    @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
    return eventService.findByDate(date);
}

@GetMapping("/events/datetime/{datetime}")
public String getByDateTime(
    @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime datetime) {
    return "時間: " + datetime;
}

2. 查詢參數(shù)(URL 參數(shù))

@RequestParam

獲取 URL 查詢字符串參數(shù)

// 必填參數(shù)
@GetMapping("/users")
public List<User> getUsers(@RequestParam String name) {
    return userService.findByName(name);
}

// 可選參數(shù)
@GetMapping("/users")
public List<User> getUsers(
    @RequestParam(required = false) String name,
    @RequestParam(defaultValue = "1") int page,
    @RequestParam(defaultValue = "10") int size
) {
    return userService.findByName(name, page, size);
}

// 接收多個值
@GetMapping("/users")
public List<User> getUsers(@RequestParam List<Long> ids) {
    return userService.findByIds(ids);
}

// 獲取所有查詢參數(shù)(Map形式)
@GetMapping("/search")
public String search(@RequestParam Map<String, String> params) {
    return params.get("keyword");
}
// 查詢參數(shù)中的時間
@GetMapping("/events")
public List<Event> getEventsByDate(
    @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
    return eventService.findByDate(date);
}

// 多個時間參數(shù)
@GetMapping("/events/range")
public List<Event> getEventsByRange(
    @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
    @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime) {
    return eventService.findByDateRange(startDate, endTime);
}

3. 請求體參數(shù)

@RequestBody

獲取 JSON/XML 格式的請求體

@PostMapping("/user")
public User createUser(@RequestBody User user) {
    return userService.save(user);
}

// 接收 Map 類型的請求體
@PostMapping("/data")
public String processData(@RequestBody Map<String, Object> data) {
    return data.toString();
}

// 使用 DTO 接收參數(shù)
@PostMapping("/register")
public ResponseEntity<?> register(@RequestBody RegisterDTO registerDTO) {
    // 處理注冊邏輯
    return ResponseEntity.ok("注冊成功");
}

@ModelAttribute

獲取表單數(shù)據(jù)(支持 GET/POST)

// 綁定到對象
@PostMapping("/user")
public String createUser(@ModelAttribute User user) {
    userService.save(user);
    return "success";
}

// 綁定到 Map
@PostMapping("/user")
public String createUser(@ModelAttribute Map<String, Object> model) {
    return model.get("name").toString();
}

4. 請求頭參數(shù)

@RequestHeader

獲取 HTTP 請求頭信息

@GetMapping("/info")
public String getInfo(
    @RequestHeader("User-Agent") String userAgent,
    @RequestHeader(value = "Authorization", required = false) String auth,
    @RequestHeader Map<String, String> headers
) {
    return "User-Agent: " + userAgent;
}

5. Cookie 參數(shù)

@CookieValue

獲取 Cookie 中的值

@GetMapping("/profile")
public String getProfile(@CookieValue("sessionId") String sessionId) {
    return "Session ID: " + sessionId;
}

// 可選參數(shù)
@GetMapping("/profile")
public String getProfile(
    @CookieValue(value = "sessionId", defaultValue = "default") String sessionId
) {
    return "Session ID: " + sessionId;
}

6. 文件上傳參數(shù)

@RequestPart

獲取文件上傳內(nèi)容

@RequestPart處理 multipart/form-data 請求中的復雜數(shù)據(jù)類型,支持文件上傳和混合表單數(shù)據(jù)(如 JSON + 文件)。

特性@RequestPart@RequestParam
數(shù)據(jù)格式支持任何內(nèi)容類型(如 JSON、XML)僅支持 application/x-www-form-urlencoded
內(nèi)容類型每個部分有獨立的 Content-Type整個請求統(tǒng)一的 Content-Type
數(shù)據(jù)處理使用 HttpMessageConverter使用 Servlet API 的參數(shù)解析
文件處理天然支持文件上傳,支持其他類型僅支持文件(作為 MultipartFile)
JSON 綁定直接綁定到對象不支持
主要應用場景上傳文件同時發(fā)送 JSON 數(shù)據(jù)‌:如用戶上傳頭像并附帶用戶信息(JSON)。
單個請求中混合不同類型的數(shù)據(jù)‌:如同時上傳多個文件和表單數(shù)據(jù)。
REST API 中的文件上傳‌:如上傳圖片并附帶元數(shù)據(jù)(JSON)。
@RestController
@RequestMapping("/api/upload")
public class UploadController {
    // 基礎文件上傳
    @PostMapping("/single")
    public String uploadSingle(@RequestPart("file") MultipartFile file) {
        return "Uploaded: " + file.getOriginalFilename();
    }

    // 多文件上傳
    @PostMapping("/multiple")
    public String uploadMultiple(@RequestPart("files") MultipartFile[] files) {
        return "Uploaded " + files.length + " files";
    }

    // 文件 + JSON對象
    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public String uploadData(@RequestPart("file") MultipartFile file, 
                             @RequestPart("metadata") MyMetadata metadata) {
        // metadata 是自定義的 JSON 對象
        return "Uploaded file with metadata";
    }
    
    // 文件 + 表單字段
    @PostMapping(value = "/upload-with-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public ResponseEntity<?> uploadWithData(
                                            @RequestPart("file") MultipartFile file,
                                            @RequestParam("name") String name,
                                            @RequestParam("description") String description) {
        // 處理文件和文本數(shù)據(jù)
        return ResponseEntity.ok("上傳成功");
    }
}

常見錯誤及解決方法:

  • 忘記設置 consumes = "multipart/form-data"‌:導致無法解析請求。
  • 文件大小超過默認限制‌:需配置 spring.servlet.multipart.max-file-size 和 spring.servlet.multipart.max-request-size。

與 @RequestBody 的區(qū)別:

  • @RequestBody 用于處理 application/json 或 application/xml 格式的請求體數(shù)據(jù)。
  • @RequestPart 用于處理 multipart/form-data 中的復雜數(shù)據(jù)類型(如 JSON + 文件)。

@RequestParam

@PostMapping("/upload-simple")
public String uploadSimple(@RequestParam("file") MultipartFile file) {
    return "文件名稱: " + file.getOriginalFilename();
}

7. 會話和屬性參數(shù)

@SessionAttribute

獲取會話屬性

@GetMapping("/dashboard")
public String dashboard(@SessionAttribute("user") User user) {
    return "歡迎 " + user.getUsername();
}

@RequestAttribute

獲取請求域?qū)傩?/p>

@GetMapping("/process")
public String process(@RequestAttribute("processedData") String data) {
    return "處理后的數(shù)據(jù): " + data;
}

8. 其他特殊注解

@MatrixVariable

獲取矩陣變量(不常用)

// URL: /cars;color=red;year=2023
@GetMapping("/cars")
public String getCar(@MatrixVariable String color) {
    return color;
}

@Value(從配置獲?。?/strong>

@GetMapping("/config")
public String getConfig(@Value("${app.name}") String appName) {
    return "應用名稱: " + appName;
}

到此這篇關于SpringBoot接口獲取參數(shù)的常用注解詳解的文章就介紹到這了,更多相關SpringBoot接口獲取參數(shù)注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

正安县| 连州市| 巴青县| 东明县| 鄱阳县| 屯门区| 凤山市| 义马市| 纳雍县| 广州市| 连云港市| 福清市| 象州县| 咸丰县| 汝城县| 泰宁县| 明水县| 自治县| 建平县| 荃湾区| 泰州市| 无棣县| 博客| 西乡县| 资溪县| 锦州市| 长沙市| 井冈山市| 崇左市| 开鲁县| 南开区| 柳林县| 盐津县| 曲周县| 石景山区| 报价| 陕西省| 镇原县| 白水县| 苏尼特右旗| 隆尧县|