为了账号安全,请及时绑定邮箱和手机立即绑定

SpringBoot - 在 Rest 方法中添加缓存控制头

SpringBoot - 在 Rest 方法中添加缓存控制头

30秒到达战场 2021-11-17 17:28:39
我有一个基本的 SpringBoot 2.0.5.RELEASE 应用程序。使用 Spring Initializer、JPA、嵌入式 Tomcat、Thymeleaf 模板引擎,并打包为可执行 JAR我创建了这个 Rest 方法:  @GetMapping(path = "/users/notifications", consumes = "application/json", produces = "application/json")    public ResponseEntity<List<UserNotification>> userNotifications(            @RequestHeader(value = "Authorization") String authHeader) {        User user = authUserOnPath("/users/notifications", authHeader);        List<UserNotification> menuAlertNotifications = menuService                .getLast365DaysNotificationsByUser(user);        return ResponseEntity.ok(menuAlertNotifications)                .cacheControl(CacheControl.maxAge(60, TimeUnit.SECONDS));;    }我想添加一个缓存控制标头,但我不知道如何...我收到一个编译错误:Multiple markers at this line    - The method cacheControl(CacheControl) is undefined for the type      ResponseEntity<List<UserNotification>>    - CacheControl    - cacheControl我还添加了这个属性 application.propertiessecurity.headers.cache=false
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

当您使用ResponseEntity.ok(T body)返回类型时,ResponseEntity<T>因为它是一种将数据添加到ResponseEntity.


您需要通过ResponseEntity.ok()没有返回Builder对象的参数创建的构建器对象。然后,您可以通过 body 方法自己添加数据。


所以你的代码应该是这样的


  @GetMapping(path = "/users/notifications", consumes = "application/json", produces = "application/json")

    public ResponseEntity<List<UserNotification>> userNotifications(

            @RequestHeader(value = "Authorization") String authHeader) {


        User user = authUserOnPath("/users/notifications", authHeader);


        List<UserNotification> menuAlertNotifications = menuService

                .getLast365DaysNotificationsByUser(user);



        return ResponseEntity.ok().cacheControl(CacheControl.maxAge(60, TimeUnit.SECONDS)).body(menuAlertNotifications);



    }


查看完整回答
反对 回复 2021-11-17
  • 1 回答
  • 0 关注
  • 181 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信