SpirngMVC Endpoint請求參數(shù)如何控制驗證

package com.example.demo.controller;

import javax.validation.constraints.NotBlank;

import org.springframework.http.ResponseEntity;

import org.springframework.validation.annotation.Validated;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestHeader;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import com.example.demo.controller.model.PostModel;

@Validated

@RestController

@RequestMapping("/mb/v1")

public class MemberEndpoint {

@RequestMapping(value = "/get", method = RequestMethod.GET)

public ResponseEntity<String> get(

@NotBlank(message = "Name can't be blank.") @RequestParam(name = "name", required = false) String name)

throws Exception {

return ResponseEntity.ok().body("success");

}

@RequestMapping(value = "/header", method = RequestMethod.GET)

public ResponseEntity<String> header(

@NotBlank(message = "TraceId can't be blank.") @RequestHeader(name = "traceId", required = false) String traceId)

throws Exception {

return ResponseEntity.ok().body("success");a

}

@RequestMapping(value = "/getAndHeader", method = RequestMethod.GET)

public ResponseEntity<String> getAndHeader(

@NotBlank(message = "Name can't be blank.") @RequestParam(name = "name", required = false) String name,

@NotBlank(message = "TraceId can't be blank.") @RequestHeader(name = "traceId", required = false) String traceId) {

return ResponseEntity.ok().body("success");

}

@RequestMapping(value = "/post", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")

public ResponseEntity<String> post(@Validated @RequestBody PostModel model) {

return ResponseEntity.ok().body("success");

}

@RequestMapping(value = "/postAndHeader", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")

public ResponseEntity<String> postAndHeader(

@NotBlank(message = "TraceId can't be blank.") @RequestHeader(name = "traceId", required = false) String traceId,

@Validated @RequestBody PostModel model) {

return ResponseEntity.ok().body("success");

}

@RequestMapping(value = "/postAndGetAndHeader", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")

public ResponseEntity<String> postAndGetAndHeader(

@NotBlank(message = "Name can't be blank.") @RequestParam(name = "name", required = false) String name,

@NotBlank(message = "TraceId can't be blank.") @RequestHeader(name = "traceId", required = false) String traceId,

@Validated @RequestBody PostModel model) {

return ResponseEntity.ok().body("success");

}

}



/////////////////

package com.example.demo.controller;

import java.util.List;

import java.util.Set;

import java.util.stream.Collectors;

import javax.validation.ConstraintViolation;

import javax.validation.ConstraintViolationException;

import org.springframework.http.ResponseEntity;

import org.springframework.validation.ObjectError;

import org.springframework.web.bind.MethodArgumentNotValidException;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestControllerAdvice;

import com.example.demo.controller.model.ResponseResult;

@RestControllerAdvice

public class EndpointAdvice {

@ExceptionHandler(MethodArgumentNotValidException.class)

@ResponseBody

public ResponseEntity<ResponseResult> methodArgumentExceptionHandle(MethodArgumentNotValidException e) {

boolean hasErrors = e.getBindingResult().hasErrors();

if (hasErrors) {

List<ObjectError> errors = e.getBindingResult().getAllErrors();

List<String> errorList = errors.stream().map(r -> r.getDefaultMessage()).collect(Collectors.toList());

String message = String.join(";", errorList);

return ResponseEntity.ok().body(new ResponseResult("-1", message));

}

return ResponseEntity.ok().body(new ResponseResult("0", null));

}

@ExceptionHandler(ConstraintViolationException.class)

@ResponseBody

public ResponseEntity<ResponseResult> constraaintViolationExceptionHandle(ConstraintViolationException e) {

Set<ConstraintViolation<?>> set = e.getConstraintViolations();

List<String> errorList = set.stream().map(r -> r.getMessage()).collect(Collectors.toList());

if (!errorList.isEmpty()) {

String message = String.join(";", errorList);

return ResponseEntity.ok().body(new ResponseResult("-1", message));

}

return ResponseEntity.ok().body(new ResponseResult("0", null));

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容