Java Spring引导应用程序如何在JsonFormat中发送多个响应

Java Spring引导应用程序如何在JsonFormat中发送多个响应,java,Java,在按钮响应中,如何重用代码我在每次响应消息时都遇到一些问题,在if条件下返回响应,如果有任何解决方案,请向我解释 包com.kk.springbootsrestapp.controller import java.util.regex.Pattern; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping;

在按钮响应中,如何重用代码我在每次响应消息时都遇到一些问题,在if条件下返回响应,如果有任何解决方案,请向我解释 包com.kk.springbootsrestapp.controller

import java.util.regex.Pattern;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.kk.springbootrestapp.controller.bean.EmployeeBean;
import com.kk.springbootrestapp.controller.response.EmployeeResponse;

@RestController
public class EmployeeController {

    @RequestMapping(value = "regmep", method = RequestMethod.POST)
    public @ResponseBody EmployeeResponse registerEmp(@RequestBody EmployeeBean emp) {
        EmployeeResponse response = new EmployeeResponse();
        try {
            if (!Pattern.matches("^\\S{3,}$", emp.getEname())) {
//`enter code here`
                response.setResponseMessage("Invalid name");
                response.setResposeCode("400");
                return response;
            } else if (!Pattern.matches("^\\S{4,}$", emp.getEjob())) {
                response.setResponseMessage("Invalid job");
                response.setResposeCode("400");
                return response;
            } else if (!Pattern.matches("^[0-9]{2}", emp.getEage().toString())) {
//`enter code here`
                response.setResponseMessage("Invalid age");
                response.setResposeCode("400");
                return response;
            } else {
                response.setResponseMessage("success");
                response.setResposeCode("200");
            }

        } catch (NullPointerException e) {
            response.setResponseMessage("bad request");
            response.setResposeCode("400");
            return response;
        }
        return response;
    }
}

解决方案一

快速修复。 您必须在代码中包含以下消息:

EmployeeResponse response = new EmployeeResponse();
String errorMessage = "";
if (emp == null) {
    responseMessage = "bad request"
} else {
    if (!Pattern.matches("^\\S{3,}$", emp.getEname())) {
        responseMessage += "Invalid name";
    if (!Pattern.matches("^\\S{4,}$", emp.getEjob())) {
        responseMessage += "Invalid job";
    if (!Pattern.matches("^[0-9]{2}", emp.getEage().toString())) {
        responseMessage += "Invalid age";
    }
}
if (StringUtils.isBlank(responseMessage)) {
    response.setResponseMessage("success");
    response.setResposeCode("200");
} else {
    response.setResponseMessage(responseMessage);
    response.setResposeCode("400");
}
return respone;
但这仍然是丑陋的代码

解决方案二。

你可以使用,甚至可以写你的。 它使用起来很简单,但并不是所有可以通过注释完成的事情,在某些情况下,您必须手动验证数据。因此,您将在两个位置(注释和验证器类)使用验证逻辑,这是阅读旧代码时容易混淆的地方

解决方案三。

所有手写验证程序。 阅读有关全局异常处理的内容和


首先,将此逻辑移动到单独的类,例如,
EmployeeBeanValidator
。而不是使用响应直接收集有关验证的数据,并在结束时抛出异常,例如
ValidationException
,其中包含错误列表。然后,您必须在带注释的类中定义异常处理程序,然后才能修改HTTP。

感谢您提供的解决方案