【发布时间】:2019-02-07 15:00:20
【问题描述】:
我是初学者并尝试使用 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>
这是服务器快照
【问题讨论】:
-
尝试在您的@RequestMapping 中删除 headers="Accept=*/*"
-
默认情况下,RestController 会产生 json 响应,因此您不需要产生 = {MediaType.APPLICATION_JSON_VALUE} 此外,从注释中删除 headers="Accept=*/*" 并给它试一试。另外请检查您是否已将@EnableWebMvc 添加到您的调度程序/servlet/mvc 配置中。
-
*注意:如果你在你的类中使用@RestController,那么类中的所有方法都是默认的@ResponseBody,你不需要添加它。
-
@Stefan 我已删除 header="Accept=*/* 并产生 = {MediaType.APPLICATION_JSON_VALUE} 但仍然面临问题。此外,我还没有在我的调度程序/servlet 配置中添加 EnableWebMvc。
-
@TrầnQuốcVũ 我已删除 header="Accept=*/* 但仍面临问题。
标签: spring spring-boot spring-mvc spring-security