我使用angularjs对Spring管理的tomcat后端进行REST调用。但我的服务器代码似乎永远不会接到电话,浏览器会得到一个302" index.html"附在网址的末尾。例如,如果我的初始调用是" localhost:8080 / api / search / someString",浏览器会收到302重定向到" localhost:8080 / api / search / someString / index.html&#34 ;然后重定向到" localhost:8080 / api / search / someString / index.html / index.html"。
这种情况一直持续到#34;重定向太多"发生错误,它失败了。任何人的想法?
这是我的web.xml:
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
<url-pattern>/api/*</url-pattern>
<url-pattern>/page/*</url-pattern>
</servlet-mapping>
Angular call:
search: function (searchStr) {
return $http.get("/api/search/"+searchStr);
}
休息控制器:
@RestController
public class SearchResource {
@Autowired
private ItemService itemService;
@RequestMapping(value = "/api/search/{searchStr}", method = RequestMethod.GET)
public List<Item> getItemsBasedOnSearchString(@PathVariable String searchStr) {
return itemService.getAllItems();
}
public ItemService getItemService() {
return itemService;
}
public void setItemService(ItemService itemService) {
this.itemService = itemService;
}
}
答案 0 :(得分:0)
有时你可以犯下最愚蠢的错误!我将RequestMapping注释从“/ api / search”更改为“/ search”,它可以正常工作。
感谢。