使用SpringMVC開發Restful API(1)-常用注解的使用


  SpringMVC中的常用注解用法:

1. @Controller:一般用於類,表明該bean是一個Controllerbean

2.@ResponseBody:用於類和方法,用於方法則表明中該方法返回的是json串,用於類則表明類中所有的方法返回的都是json串。

3.@RestController:相當於@Controller + @ResponseBody

4.@RequestMapping:映射http請求urljava的方法。它有多個參數選項,一般常用的參數選項有:

  pathurl相對地址,第一個字符必須為“/”,一般必填,value參數的別名。

    示例:@RequestMapping(path="/mypath")

  methodurl請求類型,可以為:enum RequestMethod{GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE}中的一個或多個

    示例:@RequestMapping(path="/myPath",method={RequestMethod.GET, RequestMethod.POST})

  consumesurl請求必須的Content-Type類型。

    示例:@RequestMapping(path="/myPath",consumes = {"text/plain", "application/*"})

  providesurl請求返回的類型

    示例:@RequestMapping(path="/myPath",produces = "application/json; charset=UTF-8")

5.@PostMappingurlpost請求,相當於@RequestMapping(method=RequestMethod.POST)但只能用在方法上,不能用在類上,其他參數和RequestMapping用法完全相同。在Restful API中代表添加

6.@GetMapping同PostMapping。在Restful API中代表查找

7.@PutMapping同PostMapping。在Restful API中代表更新

8.@DeleteMapping:同PostMapping。在Restful API中代表刪除

9.在4、5、6、7、8這幾個請求映射注解中path可以有多種使用方法。

  9-1 如果在類上加了@RequestMapping,其他類上加了別的映射注解,那么到該方法的請求地址就是類上的映射注解的path+方法上的映射注解的path

  9-2 形如@GetMapping("/user/{id}") 表示給請求url中的/user/后的片段取了個名為id,這個片段在參數中可以用@PathVariable注解獲得到

  9-3 形如@GetMapping("/user/{id:\\d+}") 表示通過正則表達式來限制URL中請求資源類型,這里表示id只能為數字

10.@RequestParam:用於方法的參數,表示映射請求參數到java的參數,它有多個參數選項,一般常用的參數選項有:

  name:表示映射請求的參數名,它會從請求的參數中找到和name指定的參數名的參數的值,然后賦給指定方法中的參數。

    示例:public UserDto getUserInfo(@@RequestParam(name="id")String idNo)  表示將會從請求的參數中找到keyid的參數並將其值賦給idNo

  required:布爾值,表示請求參數中必須的有該參數

  defaultValue:如果請求參數中沒有該參數,那么會給指定的方法的參數一個默認值。

11.@PathVariable:用於方法的參數,它會從映射指定的url片段到java的參數中,一般常用的參數選項有:

  name:表明要指定哪一個url片段

  requiredurl片段中是否必須要有該片段

    示例:假如方法頭部添加了@GetMapping("/user/{id}"),方法的參數中有一個@PathVariable(name="id", required=true)String idNo參數,那么表明請求url中必須得有{id}該片段,且會把該片段賦給idNo參數

 

二 SpringMVC中自定義異常捕獲

12@ControllerAdvice:用於類,springMVC會將這個@ControllerAdvice標注的類注冊成一個特殊的bean,這個bean主要用來攔截Contorller層拋出的異常。

13.@ExceptionHandler:用於被@ControllerAdvice標注的類中的方法,這個方法會處理指定的異常,並將異常返回給前端。一般常用的參數選項有:

  Class<? extends Throwable>[] value() default {}:表明要捕獲指定的異常類

14.@ResponseStatus:搭配@ExceptionHandler一起使用,表明拋出的異常狀態碼和異常原因,一般常用的參數選項有:

  HttpStatus code() default HttpStatus.INTERNAL_SERVER_ERROR:表明要拋出的異常狀態碼,默認為500

  reason:表明拋出的異常原因

    示例:

@ControllerAdvice
public class ExceptionHandlerController {
    
    @ExceptionHandler(UserException.class)
    @ResponseStatus(code=HttpStatus.INTERNAL_SERVER_ERROR, reason="描寫原因")
    @ResponseBody
    public Map<String, Object> handlerUserException(UserException ex){
        Map<String, Object> errMap = new HashMap<>();
        errMap.put("id", ex.getUserId());
        return errMap;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM