您的网址(http://localhost:8080/messages/1/comments/abc)表明评论嵌套在邮件中。您的控制器应如下所示:
@RestController
@RequestMapping("/messages")
public class MessageResource {
@RequestMapping(value = "/{messageId}")
public String getCommentResource(@PathVariable("messageId") String messageId) {
//test
return messageId;
}
@RequestMapping(value = "/{messageId}/comments/{commentsContent}")
public String getCommentResource(
@PathVariable("messageId") String messageId,
@PathVariable("commentsContent") String commentsContent) {
//test
return messageId + "/" + commentsContent;
}
}
我不完全确定您希望在MessageResource类中做什么,但这个想法就在那里。
Rest - HTTP 方法
现在,这些用法是 Get 请求。但是,您应该考虑使用适当的 Http 方法:
- 获取:读取资源
- 发布:创建资源
- 放置:更新
- 删除:删除:)
看看这个: http://www.restapitutorial.com/lessons/httpmethods.html
帖子示例:
@RequestMapping(method=RequestMethod.POST, value = "/{messageId}/comments/{commentsContent}")
public ResponseEntity<String> getCommentResource(
@PathVariable("messageId") String messageId,
@RequestBody Comment comment) {
//fetch the message associated with messageId
//add the comment to the message
//return success
return new ResponseEntity<String>(HttpStatus.OK);
}
类名
另外,我个人会将这些类重命名为MessageController和RementController。
在注释后编辑 - 拆分控制器
你可以从字面上拆分控制器(更接近你所拥有的):
@RestController
@RequestMapping("/messages")
public class MessageResource {
@RequestMapping(value = "/{messageId}")
public String getCommentResource(@PathVariable("messageId") String messageId) {
//test
return messageId;
}
}
@RestController
@RequestMapping("/messages")
public class CommentResource {
@RequestMapping(value = "/{messageId}/comments/{commentsContent}")
public String getCommentResource(
@PathVariable("messageId") String messageId,
@PathVariable("commentsContent") String commentsContent) {
//test
return messageId + "/" + commentsContent;
}
}