gpt4 book ai didi

java - 为什么 Jackson 会搞乱 application/javascript 的解析?

转载 作者:太空宇宙 更新时间:2023-11-04 11:13:35 24 4
gpt4 key购买 nike

所以我有这个 RESTful Spring Boot API,它从文件系统读取 JS 文件并公开该文件的内容。目前,这就是我将该 JS 文件的内容返回给 API 使用者的方式:

return ResponseEntity.ok().header("Content-Type", "application/javascript").body(jsText) // jsText is a String variable

这是(部分)API 使用者看到的内容:

(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({});
....)

现在我正在开发一个完全不相关的功能,该功能需要我引入一个配置类来配置 java.time 类的 Jackson 序列化:

@Configuration
class WebConfig extends WebMvcConfigurerAdapter {

private final static String DATE_TIME_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'"

@Autowired
private ObjectMapper objectMapper

@Override
void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter()
DateFormat dateFormat = new SimpleDateFormat(DATE_TIME_PATTERN, Locale.default)

objectMapper.setDateFormat(dateFormat)
objectMapper.registerModule(new JavaTimeModule())

jacksonConverter.setObjectMapper(objectMapper)
converters.add(jacksonConverter)

super.configureMessageConverters(converters)
}
}

这就是我的问题开始的地方。一旦我添加了 converters.add(jacksonConverter) 行,来自同一端点的响应就会更改为:

"(function (w, d, s, l, i) {\n  w[l] = w[l] || [];\n  w[l].push({});\n..."

(注意其中的 "\n 字符)

现在,我在这里做错了什么?如果我查看响应 header ,更改后它仍然显示 application/javascript,但为什么内容发生了变化?

我可以以某种方式避免/解决这个问题吗?我的意思是,我仍然需要有关 JavaTimeModule 的部分,但希望避免破坏 API 使用者(他们无法使用 "\n 解析版本...)

谢谢!

最佳答案

is is how I return the contents of that JS file to the API consumer

既然你的javascript在文件中并且不是动态的,为什么你不遵循spring的标准来公开资源呢?

在您的 WebConfiguration(扩展 WebMvcConfigurerAdapter 的类)中重写 addResourceHandlers 方法

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/javascript/**").addResourceLocations("classpath:/static/");
}

然后你需要的就是将你的文件放在 src/main/resources/static 下并请求你的文件,假设你的文件名是 script.js 并且你在 localhsot:8080 上运行你的服务器,请求将是

http://localhost:8080/javascript/script.js

关于java - 为什么 Jackson 会搞乱 application/javascript 的解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45735999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com