Java 2个POST请求处理程序(ResponseBody&“x2B”Normal)
我喜欢在SpringMVC应用程序中实现REST-API。目前,我有一个方法来处理POST请求,它“返回”呈现的ViewScriptJava 2个POST请求处理程序(ResponseBody&“x2B”Normal),java,spring,rest,spring-mvc,Java,Spring,Rest,Spring Mvc,我喜欢在SpringMVC应用程序中实现REST-API。目前,我有一个方法来处理POST请求,它“返回”呈现的ViewScript @RequestMapping(method=RequestMethod.POST) public String onSubmit(User user, Model model) { return "success"; } 最好为POST请求添加第二个带有@ResponseBody注释的方法,例如发送JSON响应。 此外,旧方法仍然必须存在,才能处理“正
@RequestMapping(method=RequestMethod.POST)
public String onSubmit(User user, Model model)
{
return "success";
}
最好为POST请求添加第二个带有@ResponseBody注释的方法,例如发送JSON响应。
此外,旧方法仍然必须存在,才能处理“正常”请求
但这样的代码不起作用:
@RequestMapping(method=RequestMethod.POST)
public String onSubmit(User user, Model model)
{
return "success";
}
@RequestMapping(method=RequestMethod.POST)
@ResponseBody
public Object add(User user, Model model)
{
// [...]
return myObject;
}
有了这段代码,我从Tomcat得到了一个405(不允许使用方法)错误。如何解决这个问题?目前,Spring无法区分这两个请求:相同的URL,相同的请求方法 您可以通过mimetype进一步区分:
@RequestMapping(method=RequestMethod.POST, headers="content-type=application/json")
尽管有几个mimetype与JSON相关:headers
值采用一个数组,但是,您可以根据需要缩小/扩大它
请参阅。不要使用两个注释。这是一个糟糕的选择。只需再使用一个不带注释的方法。但是,通过检查以下条件,该方法与旧方法不同 只需通过查询参数(request=“JSON\u request”)从UI中再传递一个参数
是否可以定义自己的注释,如@RestRequestMapping,它从@RequestMapping扩展而来,但自动设置预期的头?这样我就不必在每个方法中都指定它们了?或者有比定义两个方法更智能的方法吗?@Markus Annotations不能被子类化,所以不是很简单。现在你能找到一种更合适的方法来满足我的目标吗?当你直接在浏览器中点击一个请求时,这是一种方法后调用。它将产生类似405的错误。要在浏览器中检查服务,请使用以下工具
@RequestMapping(method=RequestMethod.POST)
public String onSubmit(User user, Model model)
{
if(request="JSON_Request") {
newMethod(user, model);
}
return "success";
}
private Object newMethod(User user, Model model)
{
// [...]
return myObject;
}