前言:
Controller层代码是应用程序中的核心部分之一,其主要作用是处理业务逻辑并协调Model层和View层之间的交互。好的Controller层代码可以提高应用程序的可靠性和可维护性,同时也能帮助开发人员提高开发效率。本文将介绍一些Controller层代码的技巧,帮助读者编写高质量的Controller层代码。
优雅的校验参数
在Controller层接收到请求后,可以通过ASP.NET Core提供的[FromBody]和[FromQuery]特性获取请求参数,并通过数据注解(Data Annotations)对参数进行校验,例如:[HttpPost("user")] public IActionResult CreateUser([FromBody] CreateUserRequest request) { if (!ModelState.IsValid) { // 堆代码 duidaima.com return BadRequest(ModelState); } // ... }在CreateUserRequest类中可以使用数据注解来校验参数,例如:
public class CreateUserRequest { [Required(ErrorMessage = "用户名不能为空")] public string Username { get; set; } [Required(ErrorMessage = "密码不能为空")] public string Password { get; set; } }如果参数校验不通过,ModelState.IsValid属性将会为false。可以返回带有错误信息的HTTP 400响应。
[HttpGet("user/{id}")] public async Task<IActionResult> GetUser(int id) { User user = await userService.GetUserAsync(id); if (user == null) { return NotFound(); } return Ok(user); }如果返回的数据为null,可以使用ResponseEntity.notFound()方法返回HTTP 404响应。如果返回的数据不为null,可以使用ResponseEntity.ok()方法返回HTTP 200响应。
@PostMapping("/user") public ResponseEntity<ErrorResponse> createUser(@Valid @RequestBody User user) { try { userService.createUser(user); return ResponseEntity.ok().build(); } catch (UsernameExistsException ex) { String errorMessage = "用户名已存在"; ErrorResponse errorResponse = new ErrorResponse(HttpStatus.BAD_REQUEST.value(), errorMessage); return ResponseEntity.badRequest().body(errorResponse); } }