优秀的编程知识分享平台

网站首页 > 技术文章 正文

spring注解 @GetMapping@PostMapping@PutMapping@PatchMapping

nanyue 2024-07-22 13:56:22 技术文章 10 ℃

srpingMVC 前版本的 *@RequestMapping *
,到了新版本被下面新 注释 替代,相当于增加的选项:

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

· 从命名约定我们可以看到每个注释都是为了处理各自的传入请求方法类型,即 *@GetMapping *
用于处理请求方法的 *GET *
类型, *@ PostMapping *
用于处理请求方法的 *POST *
类型等。

· 如果我们想使用传统的 *@RequestMapping *
注释实现URL处理程序,那么它应该是这样的:

· @RequestMapping( value = "/get/{ id }", method = RequestMethod.GET)

· 新方法可以简化为:

· @GetMapping("/get/{id}")

@SysLog("删除用户信息")
	@DeleteMapping("/{id}")
	@PreAuthorize("@pms.hasPermission('sys_user_del')")
	public R userDel(@PathVariable Integer id) {
		SysUser sysUser = userService.getById(id);
		return new R<>(userService.removeUserById(sysUser));
	}
 

@DeleteMapping @PathVariable必须需要在path中传


用form-data表单方式传参后台可以直接用一个vo对象接收,需要用@RequstBody来接受参数如下:

/**
	 * 修改个人信息
	 *
	 * @param userDto userDto
	 * @return success/false
	 */
	@SysLog("修改个人信息")
	@PutMapping("/edit")
	public R updateUserInfo(@Valid @RequestBody UserDTO userDto) {
		return userService.updateUserInfo(userDto);
	}
 

注意:下面两个方法是会报错的

@GetMapping("/{id}")
	@ApiOperation(value = "id", notes = "订单ID")
	public R getOrder(@PathVariable String id) {
		OrderEntity order  =  new OrderEntity();
		
		return new R<>(order);
	}

	@GetMapping("/{username}")
	public R orderUser(@PathVariable String username){}
 

其实路径是一样的,改其中一个路径都可以@GetMapping("/orderUser/{username}") 这样就不会报错了。


@PathVariable (补充)

当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

@RequestMapping(“/pets/{petId}”)  
public void findPet(@PathVariable String ownerId, @PathVariable String petId)

@RequestHeader、@CookieValue

@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。

这是一个Request 的header部分:

Accept-Encoding         gzip,deflate  
Accept-Charset          ISO-8859-1,utf-8;q=0.7,*;q=0.7  
Keep-Alive              300  

public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,
                              @RequestHeader("Keep-Alive") long keepAlive)  { . . .}

这样我们可以得到 Keep-Alive = 300

@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上。

JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84

public void displayHeaderInfo(@CookieValue(“JSESSIONID”) String cookie)  { . . . }
最近发表
标签列表