我有一个RESTful API,应该提供文件上传服务。此API应支持几种类型,例如JSON,XML等。由于我想将它们转换为相同的格式以简化下一个流程,因此我为每种类型编写转换器。 Spring是否可以根据HTTP请求中的Content-Type
标头自动装配相应的转换器,这样我就不需要多次编写API并接受不同的Content-Type
?
答案 0 :(得分:0)
据我所知,自动装配在Spring应用程序启动时解决,而不是响应每个http请求。
也许您可以找到有用的Spring功能? How to get access to HTTP header information in Spring MVC REST controller?
通过使用它,您可以轻松编写某种工厂,以便为您支持的每种类型的内容实现转换器。这将是最容易扩展的方式,以便在将来支持新的内容类型而不会损害您的设计
@RequestMapping("/upload")
public void upload(
@RequestHeader("Content-Type") String contentType,
@RequestBody String body) {
Converter converter = ConverterFactory.get(contentType);
MyFormat commonFormat = converter.convert(body);
doWhateverIMustWith(commonFormat);
}