博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决请求接口要以JSON格式请求后端的问题
阅读量:4359 次
发布时间:2019-06-07

本文共 1677 字,大约阅读时间需要 5 分钟。

一开始就跟平常一样写好接口就给前端。发现老是500方法进不来发现是请求头Content-Type的问题导致的

相关知识:

(1):我们默认使用的表单和Jquery默认的Ajax请求,Content-Type都是默认采用:application / x-www-form-urlencoded

(2):提交的数据按照username = qiu&password = 123的方式进行编码,key和val都进行了URL转码,

(3):现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的JSON字符串

(4):所以在(@RequestParam(value =“token”)String token,String columnId)这样是能获取的到数据的

1:在@RequestMapping()中加入produce =“application / json; charset = UTF-8”设置请求头为json格式

@RequestMapping(value = "queryDriverEvaluateById",produces = "application/json;charset=UTF-8")@ResponseBody

发现还是500方法进不来   网上很多例子都是到这步有些就成功可以请求了,但是我的还是不行。

2:后来找到@RequestBody,来自于com.alibaba.fastjson 

相关知识:

(1):@ RequestBody接收的是一个Json的对象的字符串

(2):@ RequestBody需要把所有请求参数作为JSON解析,因此,不能包含键=值这样的写法在请求URL中,所有的请求参数都是一个JSON

(3):直接通过浏览器输入URL时,@ RequestBody获取不到JSON对象,需要用的Java编程或者基于AJAX的方法请求,将内容类型设置为应用/ JSON

在参数上写@RequestBody JSONObject jsonObject 

queryDriverEvaluateById(@RequestBody JSONObject jsonObject)

 终于发现debug打断点不在报错了,方法进来了。

JSONObject在api中是用一个私有的常量map进行封装的,实际就是一个map,只不过FastJson对其进行了封装可以通过   

String columnId = jsonObject.getString("columnId");

获取到数据。有点类似于当前学习Servlet一个一个获取参数(PS:其实就是Map键值对啦)。 

3:虽然不在500报错连方法都进不来了。不过这样写1到两个参数还好,多了还不得累死!所以继续去找解决办法!

如果是多个参数,封装成一个对象,或者本来是一个对象。

能不能通过类似于Spring MVC直接在参数上写对象让框架请求初始化时自动去找设置方法注入属性值呢?

直接形参上写    

@RequestBody DriverEvaluate driverEvaluate

传入的JSON格式字符串自动转为对象!

发现这样是可以做到的,有一点需要注意如果请求需要通过网络传输在实体内需要实现Serializable序列化。

JSON传输的请求格式如这样:

{        "qiujian": "112",        "password": "111",        "token": "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJqd3312312QiLCJpYXQiOjE1NDIwOTA1MTEsInN1YiI6IntcImpwYXBpXCI6XCJqcCFAI1wifSIsImV4cCI6MTU0MjA5MjMxMX0.Jr6LZHMF4i-4aWby7V6GFDKodV11fak-Vzgx-n9Wls0"}

 

转载于:https://www.cnblogs.com/blogspring/p/10123270.html

你可能感兴趣的文章
jQuery中的unique()
查看>>
彻底解决eslint与webstorm针对vue的script标签缩进处理方式冲突问题
查看>>
MFC学习1
查看>>
DB2性能调优
查看>>
默然回首繁忙而充实的2016
查看>>
浅谈this关键字
查看>>
jdbc驱动加载
查看>>
来了解一下Mysql索引的相关知识:基础概念、性能影响、索引类型、创建原则、注意事项...
查看>>
lecture15-自动编码器、语义哈希、图像检索
查看>>
PHP不能创建csv中文名文件
查看>>
c# 海康威视 Winform播放mp4视频
查看>>
Unity3d优化
查看>>
Git 常用命令
查看>>
POJ 3204 网络流的必须边
查看>>
看无可看 分治FFT+特征值方程
查看>>
NewTrain6 A (bzoj3631) 松鼠的新家 树剖/lca
查看>>
DES/ECB/NoPadding 加密解密
查看>>
Mac安装,简单使用,卸载homebrew详细教程
查看>>
js实现瀑布流
查看>>
[Leetcode][JAVA] Palindrome Partitioning
查看>>