【发布时间】:2014-10-30 13:44:30
【问题描述】:
我正在尝试将 REST 用于一些小操作。
Get 操作和 Post 操作工作正常,只有 PUT 操作给我问题。
我正在使用 2 个调度程序(一个映射到“/rest/”,一个映射到“/web/”,据我所知,我的配置文件是正确的(否则其他的也不行?)。
为了测试,我使用了一个名为 Postman 的 chrome 插件。
目前我只使用一个休息控制器:
@Controller
public class RestController {
@Autowired
BlogPostServiceImp blogPostService;
@RequestMapping(value= "/getPosts", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public Collection<Post> getposts()
{
return blogPostService.getPosts();
}
@RequestMapping(value = "/post/{uername}/{description}/{speciality}/{url}", method = RequestMethod.PUT)
public void addPost(@PathVariable("username") String username,
@PathVariable("description") String description,
@PathVariable("speciality") String speciality,
@PathVariable("url") String url)
{
Post p = new Post(blogPostService.getId(), "2014", username, description, speciality, url);
blogPostService.addPost(p);
}
}
正如我之前所说,GET 请求有效,但 PUT 返回 404。
编辑:glassfish 的日志文件证实了这一点:
[2014-10-30T14:28:21.180+0100] [glassfish 4.1] [警告] [] [org.springframework.web.servlet.PageNotFound] [tid: _ThreadID=30 _ThreadName=http-listener-1( 1)] [timeMillis: 1414675701180] [levelValue: 900] [[ 在名称为“dispatcher2”的 DispatcherServlet 中找不到具有 URI [/MvcSpringBlogREST/rest/post] 的 HTTP 请求的映射]]
【问题讨论】:
-
你是怎么调用那个方法的?因为它不能在网页上运行,因为网络浏览器只做 GET/POST
-
@Vld 我正在使用一个名为 Postman 的 chrome 插件来模拟调用。
-
在 Firefox 中使用 RESTClient 插件。如果它不起作用,您可以将您正在测试的请求网址发送给我吗?在这里输入
-
@ManilLiyanage chrome 插件应该可以正常工作。 localhost:8080/MvcSpringBlogREST/rest/post 那是我正在使用的网址,但它不起作用。 localhost:8080/MvcSpringBlogREST/rest/getPosts 这映射到 get 方法并且工作正常
-
@killernerd 请指定您的完整请求网址。使用您使用的值