对后端返回的数据进行适配

为什么要做接口适配

同一个功能,后端返回的数据结构经常变动,导致前端写的逻辑也得相应的修改,而接口适配就是为了解决此问题,不管后端接口怎么变动,前端只需要调整适配的数据部分,而不会对页面已有逻辑造成影响。

请求接口的适配

拿登录功能来说,有账号密码字段。

请求登录(以前)

export const Login = data => {
    return ajax.post('/sso/login', {
        username: data.username,
        password: data.password
    })
}

export const Login = data => {
    return ajax.post('/sso/login', data)
}

请求登录(现在)

export const Login = data => {
    return ajax.post('/sso/login', {
        username: data.name,
        password: data.password
    })
}

以前的写法和现在的写法,它们的差别在于以前获取的页面数据字段都是按照后端要求的数据结构写的,而现在的做法只是在请求登录时,对传递的数据进行调整。

这样做的好处在于页面中的逻辑,数据结构可以根据自己来定义,而不会限制于后端的数据结构,另外也就不必等后端接口实现好了再写相关逻辑,因为所有的数据结构都是自己来定义的。

响应数据的适配

还是拿登录功能来说

现在

export const Login = data => {
    return ajax.post('/sso/login', {
        userName: data.name,
        password: data.password
    }).then(res => {
        let data = res.data

        return {
            token: data.token,
            name: data.userName,
            sex: data.userSex,
            mobile: data.userMobile
        }
    })
}

页面中

<template>
  <div>姓名:{{user.name}}</div>
  <div>性别:{{user.sex}}</div>
</template>

<script>
    import { Login } from '$api'

    export default {
        data() {
            return {
                name: '',
                sex: ''
            }
        },
        created() {
            Login({
                name: '张三',
                password: '123456'
            }).then(res => {
                this.name = res.name
                this.sex = res.sex
            })
        }
    }
</script>

以前

export const Login = data => {
    return ajax.post('/sso/login', {
        userName: data.userName,
        password: data.password
    })
}

页面中

<template>
  <div>姓名:{{user.userName}}</div>
  <div>性别:{{user.userSex}}</div>
</template>

<script>
    import { Login } from '$api'

    export default {
        data() {
            return {
                userName: '',
                userSex: ''
            }
        },
        created() {
            Login({
                userName: '张三',
                password: '123456'
            }).then(res => {
                this.userName = res.userName
                this.userSex = res.userSex
            })
        }
    }
</script>

可以看到以前我们总是按后端返回的数据结构,原样的写在页面里面,然而一旦后端数据结构发生了变更,我们就要找到所有使用此接口的页面,并调整相应参数。

现在的做法虽然看似代码变多了,但你会发现,页面中的数据结构是按照我们自己写的,所以后端的数据结构怎么改变,都不怎么需要改动页面中的参数和逻辑。

结语

尽管接口适配可以避免重新调整页面既有逻辑,但不管如何还是需要后端提前提供接口文档的,因为最终的数据是由后端来提供的,如果期望的接口并没有返回指定数据,而这些数据需要另一个接口来获取,从而导致页面中的逻辑与现有数据不一致。

也就是说,尽管我们可以对接口进行适配,但还是有必要提前了解一下后端返回的数据和所需的数据。

原文地址:https://www.cnblogs.com/pssp/p/10123189.html

时间: 2024-11-08 04:39:44

对后端返回的数据进行适配的相关文章

38、后端返回空数据则删除不显示

//过滤数据,status为空则删除数据 Array.from(data).forEach((item, index) => { if (item.status.length=== 0) { console.log(item, index); data.splice(data[index], 1); } }); 原文地址:https://www.cnblogs.com/xlfdqf/p/11468745.html

利用解构赋值获取后端特定字段数据

很多时候,后端接口传过来的数据并不正好是我们需要的.有些场景下会有很多不需要的字段. 这时如果采用单个赋值的方法赋值数据无疑会比较麻烦.解决的办法就是利用解构赋值. mounted(){ let objs ={ name:'test', sex:'nan', caree:'kaifa', height:180, country:'country' }; ({name:this.obj.name,caree:this.obj.caree}=objs); ({height:this.obj.heig

idea+springmvc+spring+mybatis+maven整合返回json数据webapi

首先看一张目录结构图: : 创建步骤: 1.创建maven  webapp工程, 创建完后的目录结构为: 2.添加项目依赖(添加jar包) 需要的jar包: spring-webmvc, spring-test, spring-orm, commons-dbcp, mybatis, mybatis-spring, mysql-connector-java, commons-fileupload, jstl,jackson-core, jackson-databind, jackson-mappe

SpringBoot 02_返回json数据

在SpringBoot 01_HelloWorld的基础上来返回json的数据,现在前后端分离的情况下多数都是通过Json来进行交互,下面就来利用SpringBoot返回Json格式的数据. 1:新建Pesron.java @Data public class Person { //编号 private String id; // 姓名 private String name; // 性别 private String gender; } 至于@Data注解的作用,请参考Lombok教程. 2:

Django返回json数据用法示例

最近在写前端ajax发送请求到后台,结果数据提交成功,但是一直未执行成功回调函数,经过多番查找资料,终于找到答案. 本文实例讲述了Django返回json数据用法.分享给大家供大家参考,具体如下: 1.前端.jQuery发送GET请求,并解析json数据.getJSON方法可参考这里. ? 1 2 3 4 5 url = "http://example/?question=" + question + "&rand=" + Math.random(); $.

SpringMVC返回JSON数据以及文件上传、过滤静态资源

返回JSON数据 在如今前后端分离的趋势下,后端基本不需要再去关心前端页面的事情,只需要把数据处理好并通过相应的接口返回数据给前端即可.在SpringMVC中,我们可以通过@ResponseBody注解来返回JSON数据或者是XML数据. 这个注解的作用是将控制器方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,也就是HTTP响应的内容体,一般我们都是用来返回JSON数据,因为默认是按JSON格式进行转换的. 需要注意的是,在使用此注解之后不会再走视图解

在vue中使用axios实现跨域请求并且设置返回的数据的格式是json格式,不是jsonp格式

在vue中使用axios实现跨域请求 需求分析:在项目中需要抓取qq音乐的歌曲列表的数据,由于要请求数据的地址url=https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg.从qq音乐的官网上可以看到该请求的请求头中的referer中的域名是y.qq.com(发送请求页面的域名),而host的域名是c.y.qq.com(被请求页面的域名),由于两者不一样,所以不能通过前端直接发送请求给qq服务器去拿数据.这时候需要服务器做一个代理

ElementUI表格多选框根据后端传来的数据进行数据回显

前端部分代码:重要的是ref="multipleTable"和this.$refs.multipleTable.toggleRowSelection(需要勾选的行数据,是否勾选) <el-table :data="items" //这个items是我定义的数据,用于接收后端传来的表格数据(items里面包含多个对象数据),表格遍历显示 :row-key="getRowKey" //多选框时是必要的 @selection-change=&qu

【Struts2】SSH如何返回JSON数据

  在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就是平常的配置 第一种方法是使用com.google.gson.Gson 将对象转化为Json字符串  (gson-1.6.jar) 主要的代码如下 1 package com.javen.tool; 2 3 import java.io.IOException; 4 import java.io.P