Spring RestController returns 错误的内容类型
Spring RestController returns wrong content type
我正尝试通过以下方式 return Spring RestController 中的图像:
@GetMapping(path = "/images/{imageKey:.+}")
public ResponseEntity<Resource> getImageAsResource(
@PathVariable("imageKey") String imageKey) {
Resource resource = resourceService.getImage(imageKey);
return ResponseEntity.ok(resource);
}
resourceService
return 将图像作为 Java 资源对象。然而,Spring 将 Content-Type:
设置为 application/json
而不是正确的 image/...
类型,具体取决于生成的 HTTP 响应中的资源。
如何让 Spring 从 returned 资源中推断出正确的内容类型?
returned 图片资源可以是 PNG、JPG 或 GIF。
@GetMapping(path = "/images/{imageKey:.+}")
public ResponseEntity<Resource> getImageAsResource(
@PathVariable("imageKey") String imageKey) {
Resource resource = resourceService.getImage(imageKey);
Map<String, String> headers = new HashMap<>();
//Change it based on the type of image your are loading
headers.put("Content-type", MediaType.IMAGE_JPEG_VALUE);
return new ResponseEntity<>(resource, headers, HttpStatus.OK);
}
指定 content type
由映射中的方法生成。如果您不需要控制 HTTP headers 和响应代码,请使用 @ResponseBody
注释。
@ResponseBody
@GetMapping(path = "/images/{imageKey:.+}", produces = MediaType. IMAGE_JPEG_VALUE)
public Resource getImageAsResource(
@PathVariable("imageKey") String imageKey) {
return resourceService.getImage(imageKey);
}
我正尝试通过以下方式 return Spring RestController 中的图像:
@GetMapping(path = "/images/{imageKey:.+}")
public ResponseEntity<Resource> getImageAsResource(
@PathVariable("imageKey") String imageKey) {
Resource resource = resourceService.getImage(imageKey);
return ResponseEntity.ok(resource);
}
resourceService
return 将图像作为 Java 资源对象。然而,Spring 将 Content-Type:
设置为 application/json
而不是正确的 image/...
类型,具体取决于生成的 HTTP 响应中的资源。
如何让 Spring 从 returned 资源中推断出正确的内容类型?
returned 图片资源可以是 PNG、JPG 或 GIF。
@GetMapping(path = "/images/{imageKey:.+}")
public ResponseEntity<Resource> getImageAsResource(
@PathVariable("imageKey") String imageKey) {
Resource resource = resourceService.getImage(imageKey);
Map<String, String> headers = new HashMap<>();
//Change it based on the type of image your are loading
headers.put("Content-type", MediaType.IMAGE_JPEG_VALUE);
return new ResponseEntity<>(resource, headers, HttpStatus.OK);
}
指定 content type
由映射中的方法生成。如果您不需要控制 HTTP headers 和响应代码,请使用 @ResponseBody
注释。
@ResponseBody
@GetMapping(path = "/images/{imageKey:.+}", produces = MediaType. IMAGE_JPEG_VALUE)
public Resource getImageAsResource(
@PathVariable("imageKey") String imageKey) {
return resourceService.getImage(imageKey);
}