我正在做一个 Spring MVC 控制器,但我仍然遇到 POST 操作的问题。我已经阅读了许多关于 stackoverflow 的解决方案,但没有解决我的问题。
我目前的成就:
- 我发送了一个带有 Id 的 GET 请求,并成功返回了一个转换为 JSON 的对象。
- 我未能发送
POST
带有 JSON 正文的请求,return = 415 UNSUPPORTED_MEDIA_TYPE
1)我在 pom.xml 中添加了 Jackson API:1.8.5
2) 我的 Spring 配置文件:我添加了所有必要的部分:
- 视图解析器
- org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
- 映射JacksonHttpMessageConverter
- mvc:注解驱动
- 扫描我的控制器
3) 我的模型对象很简单:一个带有 ID、名称和金额的帐户
@Document
public class Account implements Serializable {
private static final long serialVersionUID = 9058933587701674803L;
@Id
private String id;
private String name;
private Double amount=0.0;
// and all get and set methods
4)最后是我的简化控制器类:
@Controller
public class AdminController {
@RequestMapping(value="/account", method=RequestMethod.POST,
headers = {"content-type=application/json"})
@ResponseStatus( HttpStatus.CREATED )
public void addAccount(@RequestBody Account account){
log.debug("account from json request " + account);
}
@RequestMapping(value="/account/{accountId}", method=RequestMethod.GET)
@ResponseBody
public Account getAccount(@PathVariable("accountId") long id){
log.debug("account from json request " + id);
return new Account();
}
}
5)在客户端我刚刚执行了 curl 命令:成功的GET
命令:
curl -i -GET -H 'Accept: application/json' http://myhost:8080/compta/account/1
POST
失败的命令:
curl -i -POST -H 'Accept: application/json' -d '{"id":1,"name":"test",amount:"0.0"}' http://myhost:8080/compta/account
有什么想法我哪里出错了吗?