前天用springmvc搭建项目的时候,写了一个restful接口,因为是post方式的http请求,所以加了@RequestBody注解,spring内置了jackson解析器,会自动根据字段名将json数据反序列化并绑定到SendValidCodeRequest变量中,前提是项目需要依赖jackson包,在pom.xml文件中增加两个配置
![](https://img.haomeiwen.com/i2001535/cc175ac60f459d75.png)
com.fasterxml.jackson.core
jackson-core
2.8.3
com.fasterxml.jackson.core
jackson-databind
2.8.3
完工之后,接下来要用spring的mockmvc框架进行单元测试,导入的依赖包就不一一说明了。
建了一个TestAppConfig.java类作为单元测试的配置类,
![](https://img.haomeiwen.com/i2001535/44d84dbdb252e030.png)
写了mockmvc 的post测试方法,在方法里面指定http header 的content-type为application/json,进行测试,结果一直报415错误
![](https://img.haomeiwen.com/i2001535/6ebe111bad606a1b.png)
从日志可以看出来springmvc提供的接口不支持json方法,所以采用json格式发送数据会出错,于是百度了一下,看到有的解释是需要为springmvc添加注解驱动,可以理解为这样@RequestBody注解才会生效,才能自动对json数据进行反序列化,不过网上的做法是在springmvc-servlet.xml配置文件里面增加配置项,这样固然可以,但是现在的项目是纯注解方式,实在不愿意在一个已经彻底去除繁琐的xml配置的项目中增加这样一个文件。
又研究了一下,发现最新版spring提供了@EnableWebMvc注解,跟上面的配置是等价的,只要在项目的配置类AppConfig.java文件中增加这个注解,完美解决!
网友评论