我想在 Spring 控制器中创建根据条件返回 String 或 SseEmitter 的方法。
我应该在方法签名中指定什么返回类型?
@GetMapping("/test")
public WHAT_TO_WRITE_HERE test() {
if (MyCondition) {
SseEmitter emitter = new SseEmitter();
//Fill SseEmitter with data, not related to question
return emitter;
} else {
return "String";
}
}
你不会的。您尝试做的事情违反了 REST 标准。您会破坏所有需要对 API 进行特殊处理的 REST 客户端。
遵循 REST API 标准,成功时返回
SseEmitter
(框架会将其转换为 200 OK
。如果出现错误,您将抛出 ResponseStatusException
并将状态代码和错误消息放入那里会得到正确的翻译,状态代码和错误消息将在客户期望的地方。