记一次 接口返回文件流或
json
类型数据时,前端的兼容处理。
要求调用接口上传文件,成功时,返回值为
json
,提示
json
中的信息;失败时,返回值为流,下载的流文件。需要前端进行兼容判断。
大致思路:设置
responseType: 'blob'
作为返回值的解析方式,统一以
blob
的方式解析,然后通过
FileReader.readAsText
读取
blob
数据为
string
,根据
string
能否解析为
json
判断接口返回的数据类型。
axios({
...
responseType: 'blob'
}).then(res => {
const reader = new FileReader();
reader.onload = event => {
try {
const json = JSON.parse(event.target.result);
if (json.success) {
this.$message.success(json.msg)
} catch (err) {
let href = window.URL.createObjectURL(res )
let saveLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')
saveLink.href = href
saveLink.download = filename
document.body.appendChild(saveLink)
let event = document.createEvent('MouseEvents')
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
saveLink.dispatchEvent(event)
setTimeout(() => {
document.body.removeChild(saveLink)
window.URL.revokeObjectURL(href)
}, 0)
reader.readAsText(res);
let file = this.fileCopy [0].raw;
var formData = new FormData();
formData.append('file',file)
upload(formDa
最近在做接口自动化测试,响应的内容大多数是多层嵌套的json数据,在对响应数据进行校验的时候,可以通过(key1.key2.key3)形式获取嵌套字典值的方法获取响应值,再和预期值比较
keys_list = keys.split('.')
#以“.”为间隔,将字符串分裂为多个字符串,其实字符串为字典的键,保存在列表keys_list里
if isinstance(date,dict):
#如果传入的数据为字典
dictionary = dict(date)
#初始化字典
for i in keys_list:
#按照keys_list
前端处理数据时,需要处理:因为前端接收到的是一个对象(object)
JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以替换值,或者如果指定了replacer是一个数组,可选的仅包括指定的属性。
1、将JSON 对象转换为字符串
var dataObj ...
// 封装axios的下载数据流转换成excel
export function DownLoadToExcel(url, data = {}, fileName) {
fileName = fileName + '.xls'
return new Promise((resolve, reject) => {
axios
背景:在新窝点学习,需求是导出表格(固定,其它文件类型这里不涉及),但后端最大导出量是20W,超过20W查询就返回JSON格式数据,如{“code”: “xxx”, “msg”:“超过20W,导出失败”, xxxx},所以需要前端去做导出数据的处理,废话也不多说,走流程:
一、我们需要处理封装的请求:
ps:我这里使用flyio,也验证过了axios
// 给请求加responseType属性,具体可以查看mdn,看字面意思你可理解为加了此属性可使得响应返回的类型是XXX,因为文件类型,所以需要加blob或
哈哈哈哈哈33333_111111111eeeeeeeeeeeeeeeeeee_è¯å•å·ç _20200810-174122.xlsx
// 中文解码处理
function decodeUtf8(bytes) {
var encoded = "";
for (var i = 0; i < bytes.length; i++) {
encoded += bytes[i].toString(16)
后台返回json数据和前台解析json数据
一般来说web开发中,前台采用json数据提交给后台,后台处理数据以后返回json数据给前台,前台解析json,显示数据。
总而言之,前后台直接交换的数据格式最常用的非json数据无疑了。
这里就总结一些json数据的前后台处理方式。
1.JSON数据
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据...
那么问题就是我该如何得到这组数据中的msg中的数据或者data中的name的数据
JSON.parse()方法,这个方法在我们的JS中是一个自带的方法,
调用的时候直接通过JS对象.属性名就可以食用了
在这个示例中,我们使用@GetMapping注解来标记方法,表示该方法会处理GET请求,并且返回的是一个List<User>类型的数据。由于类上面使用了@RestController注解,所以SpringBoot会自动将返回的数据转换成JSON格式。
当我们访问该接口时,会得到一个JSON格式的数据。
另外,如果需要返回单个对象,可以使用@RequestBody注解来接收请求体中的数据,并将其转换成对象。
示例代码如下:
```java
@RestController
public class UserController {
@PostMapping("/user")
public User createUser(@RequestBody User user) {
// 保存用户数据
return user;
在这个示例中,我们使用@PostMapping注解来标记方法,表示该方法会处理POST请求,并且接收一个User类型的数据。由于类上面使用了@RestController注解,所以SpringBoot会自动将返回的数据转换成JSON格式。