我正在使用Spring Framework和宁静的Web服务,我正在尝试使用restful服务创建一个API并使用get方法。我创建了一个方法,我试图让它返回一个字符串,但我得到一个404错误 - 找不到请求的资源。请参阅下面的代码:
@RestController
@RequestMapping("/test")
public class AreaController {
public RestResponse find(@PathVariable String name, ModelMap model) {
model.addAttribute("movie", name);
return "list";
}
}
我正在使用:localhosr:8080 / MyProject / wangdu
答案 0 :(得分:3)
发生此错误是因为您忘记添加
@RequestMapping(value = "/{name}", method = RequestMethod.GET)
在找到方法之前:
@RestController
@RequestMapping("/test")
public class AreaController {
@RequestMapping(value = "/{name}", method = RequestMethod.GET)
public RestResponse find(@PathVariable String name, ModelMap model) {
model.addAttribute("movie", name);
return "list";
}
}
答案 1 :(得分:1)
请确认:
find
方法返回的值是一个值为"list"
的String,而find方法声明正在等待RestResponse
对象例如,如果我有一个RestResponse
这样的对象:
public class RestResponse {
private String value;
public RestResponse(String value){
this.value=value;
}
public String getValue(){
return this.value;
}
}
然后尝试以这种方式返回值:
public RestResponse find(@PathVariable String name, ModelMap model) {
model.addAttribute("movie", name);
return new RestResponse("list");
}
验证该方法是否具有@RequestMapping
注释,其中包含您期望从网址中获取的值
@RequestMapping(method = RequestMethod.GET, value = "/{name}")
默认情况下,调用其余资源的正确方法是您在@RequestMapping
级别@RestController
设置的@RequestMapping("/test")
值,在这种情况下可以是: http://localhost:8080/test/myValue
如果您需要使用不同的上下文路径,那么您可以在application.properties
上更改它(用于春季启动)
server.contextPath=/MyProject/wangdu
在这种情况下,您可以像这样调用api:
http://localhost:8080/MyProject/wangdu/test/myValue
以下是此备选方案的完整代码:
@RestController
@RequestMapping("/test")
public class AreaController {
@RequestMapping(method = RequestMethod.GET, value = "/{name}")
public RestResponse find(@PathVariable String name, ModelMap model) {
model.addAttribute("movie", name);
return new RestResponse("list");
}