SpringBoot接口接收json参数

前言

通常来讲,HTTP 方法会映射为 CRUD 动作,但这并不是严格的限制,有时候 PUT 也可以用来创建新的资源,POST 也可以用来更新资源。所以在平时的 Web 开发中,你可能常看到method 的值是 GET 和 POST,但是我们需要养成一个好的编码习惯。

CRUD 动作HTTP 方法
CreatePOST
ReadGET
UpdatePUT(全部资源) 或 PATCH(部分资源)
DeleteDELETE

前提

首先在controller上加上注解:@RestController 

@RestController
@RequestMapping("/user")
@Api(tags = "user", description = "用户控制器")
public class UserController {
    // ...
}

详细介绍

一、GET

1)@PathVariable  获取路径参数。即 url/{id} 这种形式。 

    @GetMapping("/getDetail/{id}")
    @ApiOperation(value = "根据id获取用户")
    public RbacUser getDetail(@PathVariable Long id) {
        return userService.getById(id);
    }

2)@RequestParam 获取查询参数。即 url?name=xx 这种形式

主要有参数:

value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;

required:是否必须,默认是true,表示请求中一定要有相应的参数,否则会报错;

    @GetMapping("/getByAccount")
    @ApiOperation(value = "根据账号获取用户")
    public RbacUser getByAccount(@RequestParam(required = false) String account) {
        return userService.getByAccount(account);
    }

3) 直接封装DTO参数形式

    @GetMapping("/find")
    @ApiOperation(value = "根据条件获取用户")
    public List<RbacUser> find(RbacUserDTO rbacUserDTO) {
        return userService.find(rbacUserDTO);
    }

二、DELETE

@PathVariable  获取路径参数。即 url/{id} 这种形式。

    @DeleteMapping("/delete/{id}")
    @ApiOperation(value = "删除用户")
    public void delete(@PathVariable Long id) {
        userService.delete(id);
    }

三、POST/PUT/PATCH

@RequestBody  将HTTP请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

    @PostMapping("/create")
    @ApiOperation(value = "创建用户")
    public RbacUser getByAccount(@RequestBody @Validated RbacUserDTO rbacUserDTO) {
        return userService.save(rbacUserDTO);
    }

@Validated:对数据进行校验,以下注解报错会直接返回,如果校验类中包含一个对象引用属性,需要在属性上加上@Valid注解

具体参数检验请参看文章:

https://blog.csdn.net/herojuice/article/details/85788681
 

相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页