在使用Spring Boot开发Restful API时,有时候会遇到一个常见的错误:“不支持内容类型‘text/plain;charset=UTF-8’”。这个错误通常在使用@RestController注解的类中出现,该注解用于标识该类为RESTful API的控制器。
这个错误的原因是因为Spring Boot默认的消息转换器不支持将文本类型的响应以"text/plain;charset=UTF-8"的格式返回给客户端。而在某些情况下,我们可能需要返回纯文本的响应,比如返回简单的字符串或者HTML代码片段。为了解决这个问题,我们可以自定义一个消息转换器来支持"text/plain;charset=UTF-8"的内容类型。下面是一个示例代码:javaimport org.springframework.http.MediaType;import org.springframework.http.converter.HttpMessageConverter;import org.springframework.http.converter.StringHttpMessageConverter;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import java.nio.charset.StandardCharsets;import java.util.ArrayList;import java.util.List;@RestControllerpublic class MyController { @GetMapping(value = "/text", produces = "text/plain;charset=UTF-8") public String getText() { return "Hello, World!"; } @GetMapping(value = "/html", produces = MediaType.TEXT_HTML_VALUE) public String getHtml() { return "在上面的代码中,我们定义了一个名为MyController的类,并使用@RestController注解将其标识为RESTful API的控制器。该类中包含了两个方法:getText()和getHtml()。getText()方法使用@GetMapping注解来处理GET请求,并通过produces属性指定了返回的内容类型为"text/plain;charset=UTF-8"。在方法体中,我们简单地返回了一个字符串。getHtml()方法也使用@GetMapping注解来处理GET请求,并通过produces属性指定了返回的内容类型为"text/html"。在方法体中,我们返回了一个带有Hello, World!
"; } // 注册自定义的消息转换器 @Bean public HttpMessageConverters customConverters() { List> converters = new ArrayList<>(); StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(StandardCharsets.UTF_8); stringConverter.setSupportedMediaTypes(Collections.singletonList(MediaType.TEXT_PLAIN)); converters.add(stringConverter); return new HttpMessageConverters(true, converters); }}