我正在开始一个新项目并采用spring webflux作为反应式休息框架 . 我有一个用例在后端返回验证码图像 . 我有一个示例代码,如下所示生成验证码图像并返回spring框架,但现在我不知道如何以反应方式返回图像 .
这是我在Spring MVC方式中的用例:
@RequestMapping(value="/captcha/{id:.+}", produces = MediaType.IMAGE_JPEG_VALUE)
public @ResponseBody byte[] captcha(@PathVariable("id") String captchaId, HttpServletResponse res) throws Exception{
try{
byte [] captchaImg = (byte[])cacheService.getValue(captchaId, AuthConstants.CACHE_CAPTCHA_IMG_KEY);
return captchaImg;
}catch(Exception e){
res.setStatus(HttpStatus.NOT_FOUND.value());
return null;
}
}
在反应方式中,失败代码如下:
public Mono<ServerResponse> captchaImage(ServerRequest request) {
return Mono.just(request.pathVariable("id"))
.flatMap(id->cacheService.getValue(id, AuthConstant.CACHE_CAPTCHA_IMG_KEY))
.flatMap(captchaImage-> {
System.out.println("img:"+captchaImage);
return ServerResponse
.ok()
.contentType(MediaType.IMAGE_JPEG)
.body(BodyInserters.fromObject(captchaImage));
});
}
这段代码是失败的,我找不到任何信息来了解如何做到这一点 .
我需要你的帮助 . 感谢您提供一些代码段 .
谢谢
1 回答
我想我找到了答案 .