Как определить статус HTTP 406 в Spring MVC - PullRequest
0 голосов
/ 07 февраля 2019

Я новичок и пытаюсь создать REST API, используя Spring MVC, но получаю ошибку HTTP 406.Я не знаю, что пошло не так в коде.Это мой контроллер.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>

Вот серверная оснастка

API request

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

Вот возможные решения, с которыми я бы попробовал:

  1. Поскольку вы используете @RestController, он обеспечивает внутреннее @ResponseBody, поэтому вам не нужно его использовать, поэтому удалите @Аннотация ResponseBody.

  2. Попробуйте удалить accept и создайте атрибуты также, поскольку тип содержимого контроллера остатка - сам JSON.

  3. Также, если вы делаете запрос, используяПочтальон или любой другой клиент, а затем убедитесь, что вы добавили тип содержимого в заголовки.

Надеюсь, это поможет ..!

0 голосов
/ 08 февраля 2019
  1. Remove headers = "Accept = / ".
  2. В вашем HelloWebSpring-Servlet.xml добавьте mvc: на основе аннотаций .

Это заставит 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

0 голосов
/ 08 февраля 2019

На самом деле вы должны попытаться обернуть это в ResponseEntity.Я бы сделал это так:

@RequestMapping(value = "/api/login",method = RequestMethod.GET) 
public ResponseEntity<?> authentication(){        
    List<Login> login = loginService.getUser();     
    return new ResponseEntity<>(login, HttpStatus.OK);
}}

Я думаю, что это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...