【发布时间】:2014-08-24 09:31:17
【问题描述】:
我正在尝试在您的应用程序中实现 REST API 端点。
@Controller
public class HerokuController {
@RequestMapping(value = "/heroku/resources/", method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<JSONObject> provision(@RequestBody JSONObject body){
System.out.println("called! \n");
JSONObject response = new JSONObject();
response.put("id", 555);
response.put("message", "Provision successful!");
return new ResponseEntity<JSONObject>(response,HttpStatus.OK);
}
所以我编写了这个类,其中包含一个映射方法(heroku/ressources)。
但是当我尝试调用它时,我收到 404 错误,因为找不到 /WEB-INF/heroku/resources.jsp。但是,我什至不想获得视图,而是获得 HTTP 响应。
谁能告诉我我们一般应该修改哪个配置文件来告诉 Spring 这个控制器不想发回视图而是 HTTP 响应?
但是,如果我将其更改为此方法,则会调用该方法:
@RequestMapping(value = "/heroku/resources/", method = RequestMethod.POST)
public ModelAndView provision(final HttpServletRequest request){
System.out.println("called! \n");
JSONObject response = new JSONObject();
response.put("id", 555);
response.put("message", "Provision successful!");
final Map<String, Object> result = new HashMap<String, Object>();
return new ModelAndView("jsonView",result);
}
所以将返回类型改为"ModelAndView"。
谢谢。
【问题讨论】:
-
@Genzotto,我认为这不会回答 OP 的问题。我相信他需要做的是添加
@ResponseBody注释。问题是如果你不告诉它,Spring MVC 会尝试“猜测”你的意思。它通过查看请求 URI、挑选最后一位(在您的情况下为“资源”)并添加“.jsp”的后缀来完成此操作。在这种情况下,OP 不希望返回视图的名称,而是返回 view 的内容。
标签: java spring rest jakarta-ee spring-mvc