首页 > 解决方案 > Spring Rest 按后缀/文件扩展名过滤

问题描述

我们希望通过 Spring Boot Webapp 传递一些 HTML 文件以及其他文件。我们希望通过仅为以 .html 结尾的 URI 创建一个 REST 端点来拆分 HTML 和非 HTML 流量。我们尝试了这样的事情但没有成功:(

@GetMapping(value = "/{*html}")
public String deliverHtml(HttpServletResponse response, HttpServletRequest request) {
   return doSomeMagicStuff();
}

@GetMapping(value = "{*filepaths}/{*html}")
public String deliverHtml2(HttpServletResponse response, HttpServletRequest request) {
   return doSomeMagicStuff();
}

不幸的是,上面的代码和其他一些变体不起作用

标签: javarestspring-boot

解决方案


这段代码对我来说很好。请注意,出于您的目的,您可以只使用蚂蚁模式(而不是真正的正则表达式)。

@RestController
@RequestMapping("filter-content")
public class FilterController {

    @PostMapping(value = "*.xml")
    public void onlyXml() {
        System.out.println("Xml content");
    }

    @PostMapping(value = "*.html")
    public void onlyHtml() {
        System.out.println("Html content");
    }


    @PostMapping(value = "*")
    public void otherContent() {
        System.out.println("Other content");
    }

}

PS:还考虑使用 POST 请求来“传递”内容。


推荐阅读