Reputation: 2242
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
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