我正在尝试设置我的应用程序来提供 JSON 架构文件。这部分很简单,就完成了。我正在努力解决的是让它们提供正确的内容类型 -
application/schema+json
- 而不是默认的 - application/json
。
我的配置非常简单:
override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
registry.addResourceHandler("/api/schemas/**")
.addResourceLocations("classpath:/schemas/")
}
但是除了缓存之外,我看不到任何明显的更改任何标头的信息。
尝试重写 configureContentNegotiation 方法。这是我的 Java 代码。下面,我为 javascript 模块设置了 “text/javascript” MIME 类型。
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.mediaType("mjs", new MediaType("text","javascript"));
}
对于 2.x 和 3.x 版本,如果想要为特定文件扩展名指定响应类型,则可以使用
WebServerFactoryCustomizer
来完成。这样可以自定义 TomcatServletWebServerFactory
映射以包含所需的文件扩展名和相应的内容类型。
示例代码-
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.MimeMappings;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;
@Component
public class MimeMappingCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
MimeMappings mm = factory.getMimeMappings();
mm.add("mjs", "application/javascript");
factory.setMimeMappings(mm);
}
}