关于API,前后端分离
之前再开放新型web项目和app时,遇到了和前后端交互的问题。总所周知的是,web前后端交接时,最重要的交互方式的接口的制定。
而关于接口的规定,衍生出了一大堆问题,第一是关于空值的制定,是不输出呢?还是输出null,还是输出""
今天在调试1688开放平台时,1688开放平台那边出了两套接口API给我们调,一套是旧的,用关键字deprecated标志过时,而一套是新的,因为是最近才推出的吧。
有点坑的是,新接口虽然变得简洁了,但是一些老接口里面有的字段没有返回给我,对于新接口缺失字段这种事情,我也很无奈,阿里巴巴开放平台的文档真的也是写得一般般啊。
然后楷哥说去阿里巴巴的官方,看它官方是用什么老接口还是旧接口,我们照着玩就可以了。
所以我就用chrome按F12去抓包了,挺无聊也挺没效率的,以后应该会有更优的办法吧。
在分析阿里巴巴官方的html页面中,我发现他们的json数据都是写在html里面的。挺有趣的,如果把json写在一个html里面,那么前端的访问地址就会变成只有一个。而后台这边json我就可以随意地写在html代码里面了,
虽然这种方式让html代码显得很脏,但是似乎挺符合设计模式的“开闭原则”,只需要后台改动就可以了吧。
引申到APP开发这边,app那边只需要访问*.json,然后我后台把json的代码分模块化地发给android或者ios
{
banner:{},
ObjectList:[],
extraData:{}
}
最后再说一下,1688那边似乎是用老接口的字段来实现一些东西。
接口的设计,设置前台传给我的json格式是
requestParams{}
而我返回给后台的模式是:
responseBody
{ "meta":{},
"data":{}
}
具体的api规则
查看数据 product/{id} verb = "get"
删除数据 product/{id} verb = "delete"
修改数据 product/{id} verb = "put"
增加数据 product/{id} verb = "post"
在前后端整合的过程中,一定会碰到修改接口的情况,修改接口是一种很恶心的行为,会造成大量代码的修改。因为接口是契约,契约更改了,代码世界便乱了。用设计模式的拓展和封闭来讲,就是已经写过的接口不会更改,需要新数据则新增一个接口。
只要不动用到底层数据库的修改,其实改动量都不会很大。
设计模式是拥抱变化的。把不变的东西封装好,把可变的变成用户输入,这便是设计模式应该学习的,比如用{path}来代替之前的constant里面的常量
关于API,前后端分离的更多相关文章
- Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)
Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享) 点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...
- Flask之RESTFul API前后端分离
Flask之RESTFul API前后端分离 一:虚拟环境搭建的两种方式 1 pipenv的使用 pip install --user pipenv安装pipenv在用户目录下 py -m site ...
- Flask前后端分离项目案例
简介 学习慕课课程,Flask前后端分离API后台接口的实现demo,前端可以接入小程序,暂时已经完成后台API基础架构,使用postman调试. git 重构部分: token校验模块 auths认 ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储模式
前言 1.@LearningCoding 小伙伴关于用Sqlsugar在mysql数据库上的研究成果: sqlsugarcore支持mysql等数据库,在DbContext里面只需要设置dbtype为 ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之七 || API项目整体搭建 6.2 轻量级ORM
更新 1.在使用的时候,特别是更新数据的时候,如果不知道哪里有问题,可以查看数据库 和 实体类 的字段,是否大小写一致,比如 name 和 Name 2.在使用Sqlsugar 的 CodeFirst ...
- ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目
一.前言 这几年前端的发展速度就像坐上了火箭,各种的框架一个接一个的出现,需要学习的东西越来越多,分工也越来越细,作为一个 .NET Web 程序猿,多了解了解行业的发展,让自己扩展出新的技能树,对自 ...
- 前后端分离与 restful api
为什么要前后端分离(优点): PC,APP,PAD 多端适应 单页面应用(Single Page Application)SPA开发模式开始流行 前后端开发职责不清 开发效率问题,前后端互相等待 前端 ...
- laravel5.7 前后端分离开发 实现基于API请求的token认证
最近在学习前后端分离开发,发现 在laravel中实现前后台分离是无法无法使用 CSRF Token 认证的.因为 web 请求的用户认证是通过Session和客户端Cookie的实现的,而前后端分离 ...
- 如何处理好前后端分离的 API 问题(转载自知乎)
9 个月前 API 都搞不好,还怎么当程序员?如果 API 设计只是后台的活,为什么还需要前端工程师. 作为一个程序员,我讨厌那些没有文档的库.我们就好像在操纵一个黑盒一样,预期不了它的正常行为是什么 ...
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
List多个字段标识过滤 class Program{ public static void Main(string[] args) { List<T> list = new List& ...
随机推荐
- GUI与UI的区别
GUI 图形用户界面(**Graphical User Interface**,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面. 与早期计算机使用的命令行界面相比,图形界面对 ...
- 线性代数-矩阵-【2】矩阵生成 C和C++实现
矩阵的知识点之多足以写成一本线性代数. 所以我们把矩阵的运算封装成矩阵类.以C++为主进行详解. 点击这里可以跳转至 [1]矩阵汇总:http://www.cnblogs.com/HongYi-Lia ...
- bam文件softclip , hardclip ,markduplicate的探究
测序产生的bam文件,有一些reads在cigar值里显示存在softclip,有一些存在hardclip,究竟softclip和hardclip是怎么判断出来的,还有是怎么标记duplicate ...
- 用最简单的方法判断JavaScript中this的指向
目录 * 一个特例 * 开始判断 * 法则一:对象方法中的this指向对象本身(箭头函数形式的除外) * 法则二:多层嵌套函数中的this指向等同于包含该this的最近一个function的this ...
- 安装lvs过程
linux我是最小化安装的mini,安装完成后搭建本地yum,首先安装Development Tools开发工具组 1)在各服务器上修改主机名: [root@LVS1 ~]# hostname LVS ...
- Ubuntu部署可视化爬虫Portia2.0环境
部署portia环境官方文档给出的方法太过简单,对于初学者来说是很难根据那一两行字成功部署portia环境的.对于部署portia这只可爱的爬虫的过程还是有很多坑的,主要写一篇portia2.0版本的 ...
- 深入理解计算机系统(1.1)------Hello World 是如何运行的
上一篇序章我谈了谈 程序员为啥要懂底层计算机结构 ,有人赞同也有人反对,但是这并不影响 LZ 对深入理解计算机系统研究的热情.这篇博客以案例驱动的模式,通过跟踪一个简单 Hello World 程序的 ...
- fetch的使用说明
1.RN官方文档中,可使用XMLHttpRequest var request = new XMLHttpRequest(); request.onreadystatechange = (e) =&g ...
- ant安装以及环境变量配置、验证
(一)安装 ant 下载地址: http://ant.apache.org/ 根据自己电脑下载对应版本 下载完成以后,可自行解压到自己常用的盘中,但是要记住解压到哪里了,以便后续的环境变量配置 ...
- Java 多线程(二) 线程的实现
线程的实现 在Java中通过run方法为线程指明要完成的任务,有两种技术来为线程提供run方法: 1.继承Thread类并重写它的run方法.之后创建这个子类的对象并调用start()方法. 2.通过 ...