Spring可以根据HTTP标头自动启动一个实现吗?

时间:2018-04-03 10:06:51

标签: java spring spring-boot

我有一个RESTful API,应该提供文件上传服务。此API应支持几种类型,例如JSON,XML等。由于我想将它们转换为相同的格式以简化下一个流程,因此我为每种类型编写转换器。 Spring是否可以根据HTTP请求中的Content-Type标头自动装配相应的转换器,这样我就不需要多次编写API并接受不同的Content-Type

1 个答案:

答案 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);
}