0%

后端与移动端对接遇到的问题

问题

之前学后端一直是与Web页面交互,然后最近需要与移动度交互,有点陌生,就问学Android的同学是怎样交换数据的,他说根据url获取数据,json格式。感觉和Web的交互方式差不多,除了json格式,原先没用过。然后就看了下怎样用json交换数据,正好项目用的是ssm框架,@RequestBody和@ResponseBody可以实现json数据与实体类的相互转换,就偷了懒,反正只要key与属性名保持一致就行,还不用自己去拼接了。然后这几天与同学对接时遇到了问题,就测试登录,然后可以连上服务器,但一登陆就崩。不知道咋回事。之后,同学调试时发现得到了415错误,媒体类型不支持,相互确认都用了json传输接收数据,还是不行。

解决

第二天又凑到一起搞这个时,突然发现我后端的后台有报错,也是媒体类型错误,同时报错不支持Content-Type=application/x-www-form-urlencoded,这才算知道问题出在了哪里,接收、发送数据的编码格式不对,我后端的代码要求的是Content-Type=application/json(貌似用了那两个注解也只能这样?),知道了问题在哪就好办了,不过也还是弄了一下午,因为同学用了不太熟悉的依赖,查了半天也不知道怎么设置,最终又改回了之前熟悉的才解决问题,不过还好,只是换依赖花的时间长,另外,他之前只是在写页面没有对数据进行处理,所以改动不是很大,不像我后端已经把数据搞好了,要改的话还得大改。

总结

  1. 基础不扎实,毕竟半路出家,没有经过系统的学习。

  2. 出错一定要看后台,不管是否是自己这边的错误。就比如这个问题,要是我早点看后台也不至于第二天才发现这个问题。

  3. 与他人沟通时,一些细节性的东西一定要确认清楚。

另:

用了那两个注解不能传空值null,会报错,一般情况下如果拼接json数据的话不会产生这种情况毕竟自己手打,毕竟可以确定键值不为空。还没想到什么好方法,以后想到了再更新吧。

更新

上述问题解决方法:

一个Result类:

属性 方法
Result(); (构造函数初始化result和data)
private String result; getter/setter
private TbUser data; getter/setter

请求形式:(PS:请求不用这么麻烦,我这里是为了测试@RequestBody能否接受嵌套数据)

请求数据

返回数据形式:

返回数据