我使用spring构建Restful API,当我访问下面的方法时:
// get the entity in DB by using id number
@RequestMapping(value = "/{id:.+}", method = RequestMethod.GET)
public @ResponseBody
User getEmployee(@PathVariable("id") String email) {
User user=null;
System.out.println(email);
try {
user = dataServices.getEntityById(email);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(user.getNickname());
return user;
}
使用此网址:http://localhost:8080/RestCrud/user/richard_johnson@sina.com
它得到406错误:
我确定已添加
<mvc:annotation-driven />
我也确定我在pom.xml中添加了那些jackson依赖项
********************编辑************************** ***********
********************再次编辑************************* ******
正如您所看到的,我没有限制@RequestMapping注释中的标题,因此我不认为它是与标题限制相关的问题。
另外,我的网址模式如下:
http://localhost:8080/RestCrud/user/id
我测试过&#34;列表&#34; http://localhost:8080/RestCrud/user/list
它有效,但&#34; id&#34;路径不
答案 0 :(得分:1)
好像你已经注释掉了一些jackson依赖项 发生错误的原因是您的员工对象无法转换为浏览器可接受的格式。你definitley本想回应json。
Spring 4需要以下jackson libs
更新:
查看您的网址格式, *。com 扩展程序正在推动spring执行内容协商,而不是验证接受标头。
您可以使用
强制Spring不基于路径扩展进行内容协商<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="false" />
</bean>
答案 1 :(得分:0)
查看at this answer,简而言之,如果您使用的是Spring 4,请确保包含jackson-core
和jackson-databind
依赖项