flower
flower

Reputation: 2242

How to change my code to Spring Boot when I have one request, and multiple returns?

If I do not use Spring Boot, my codes run well:

public void dealResult(HttpServletRequest request, HttpServletResponse response) throws Exception {
    long sartTime = System.currentTimeMillis();
    while (true) {
        Student student = getStudentResult();
        if (student != null) {
            response.setContentType("text/html;charset=UTF-8");
            Writer writer = response.getWriter();
            String ret = student.getName() + "is ok";
            writer.write(ret);
            writer.close();
            if (student.isAllOver) {
                break;
            }
            if (System.currentTimeMillis() - startTime > 60000) {
                response.setContentType("text/html;charset=UTF-8");
                Writer writer = response.getWriter();
                String ret = “Deal over time ";
                writer.write(ret);
                writer.close();
                break;
            }
        }
    }
}

But now I want to change my code to Spring Boot, if return one result, I can change the code like this

@PostMapping
@RequestMapping(value = {"/"}, produces = {"application/json; charset=UTF-8"})
public ResponseEntity<Object> dealResult(HttpServletRequest request) {
    return new ResponseEntity<>("Deal over time", HttpStatus.OK);
}

How to change my code to have multiple returns?

Upvotes: 0

Views: 67

Answers (1)

Vy Do
Vy Do

Reputation: 52498

Your words are multi response, mutli-response was explained at here https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages#Body_2

Seemly, what you need shouldn't called "multi-response", Do you need response in few cases differently? Separate per case in control structure, then return the corresponding HttpStatus code. You may be need something like this

@PostMapping
@RequestMapping(value = {"/"}, produces = {"application/json; charset=UTF-8"})
public ResponseEntity<Object> dealResult(HttpServletRequest request, HttpServletResponse response) throws Exception {
    long sartTime = System.currentTimeMillis();
    Student student = getStudentResult();
    if (student != null) {
        response.setContentType("text/html;charset=UTF-8");
        Writer writer = response.getWriter();
        String ret = student.getName() + "is ok";
        writer.write(ret);
        writer.close();
        if (student.isAllOver) {
            return new ResponseEntity<>("Deal over time", HttpStatus.OK);
        } else {
            if (System.currentTimeMillis() - startTime > 60000) {
                response.setContentType("text/html;charset=UTF-8");
                Writer writer = response.getWriter();
                String ret = “Deal over time ";
                writer.write(ret);
                writer.close();
                return new ResponseEntity<>("Deal over time", HttpStatus.REQUEST_TIMEOUT);
            } else {
                return new ResponseEntity<>("Error", HttpStatus.INTERNAL_SERVER_ERROR);
            }
        }
    }
}

Upvotes: 1

Related Questions