我是初学者,正尝试使用Spring MVC创建REST api,但出现HTTP 406错误。我不知道代码出了什么问题。这是我的控制器。
RestController.Java
package com.nitish.sample;
@RestController
public class LoginRESTController {
@Autowired
public LoginService loginService;
@ResponseBody
@RequestMapping(value = "/api/login",method = RequestMethod.GET,headers="Accept=*/*",produces = {MediaType.APPLICATION_JSON_VALUE})
public List<Login> authentication(){
List<Login> login = loginService.getUser();
return login;
}}
pom.xml
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
</dependencies>
为进一步说明,我添加了Dispachet Servlet和web.xml HelloWebSpring-servlet.xml
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package = "com.nitish.sample" />
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> -->
<property name = "prefix" value = "/WEB-INF/jsp/" />
<property name = "suffix" value = ".jsp" />
</bean>
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>HelloWebSpring</display-name>
<servlet>
<servlet-name>HelloWebSpring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWebSpring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
这是服务器快照
答案 0 :(得分:0)
首先,您应该尝试将其包装到ResponseEntity中。我会这样:
@RequestMapping(value = "/api/login",method = RequestMethod.GET)
public ResponseEntity<?> authentication(){
List<Login> login = loginService.getUser();
return new ResponseEntity<>(login, HttpStatus.OK);
}}
我认为这应该有效。
答案 1 :(得分:0)
以下是我可以尝试的解决方案:
在使用@RestController时,它在内部提供@ResponseBody,因此您不必使用它,因此请删除@ResponseBody注释。
尝试删除accept并产生属性,因为rest控制器的内容类型是JSON本身。
此外,如果您使用邮递员或任何其他客户端发出请求,请确保在标头中添加内容类型。
希望它会有所帮助..!
答案 2 :(得分:0)
这将使spring配置您的@RestController。
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<mvc:annotation-driven />
<context:component-scan base-package = "com.nitish.sample" />
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> -->
<property name = "prefix" value = "/WEB-INF/jsp/" />
<property name = "suffix" value = ".jsp" />
</bean>
</beans>
mvc:注释驱动的详细信息:https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-config