美文网首页
前端同学-少许后端知识,有效减少开发时间

前端同学-少许后端知识,有效减少开发时间

作者: macroC | 来源:发表于2018-09-09 21:20 被阅读0次

工作中,客户端的朋友难免遇到与后端关于接口数据结构问题的扯皮,大大浪费了时间,针对这点学习一点后端知识,能把多数无技术含量的扯皮扼杀在后端小学生开口之前.

经过改良后的开发流程大概这样:

根据接口定义完成开发, 在服务器上根据定义构造测试数据, 服务器上编写好相关的接口, 更改电脑host至服务器, 手机捆绑代理, 测试完成, 把自测流程和结果提给测试, 远离扯皮, 愉快喝茶(加班).

用到的知识点

1.服务器搭建(是否开启ssl要和app中同步,原因后讲) 2.host, 3.php编写接口 ;
php简直是世界上最好的语言, 没有之一….

这里不讲搭建服务器,不懂得小兄弟自行谷歌…需要具有一定的php语言和调试基础 :

1.搭建服务器

不要一味追求https来使得更炫酷,要保证和app的服务器同步, 因为如果你的app对应的服务器不是https, 而你使用开启ssl的服务器来host, 此时会有这样的现象(从抓包工具,或者浏览器可以看到): 开始访问原始url之后(http), host解析域名重新指向主机(https), 此时url中紧邻域名之后的位置会自动删掉一个字符, 这个字符可能是 反斜杠,问号等有意义的字符,进而导致重定向失败,初步分析是http协议栈为防止url溢出,申请了固定长度的字符串来容纳url的域名段,http定向到https后,前段的字符串增加了1,即字符 “s” ,因此导致了末尾的裁剪 . 有小伙伴能解决这个问题的(除去重编译内核) 愿听详解.

2.更改电脑端的host

把你要测试的域名映射到服务器的ip, 以使得相关的接口定向到自己的服务器, 拦截到请求. 这里推荐一款软件 switchHosts, 能很轻易的切换host, 不需要重复输入密码, 但软件安全上存在一定的风险, 酌情考虑使用.

3. 重点在接口的提供和各个url的拦截

1. 更改了host之后, 原来访问正常服务器的url被重新指向了新的服务器, 处理逻辑定向到 apache 配置的根路径的 index.html或index.php, 这里应该放置一个index.php文件, 用于给所有接口分流(根据参数, 把请求分发给相关的处理逻辑).
2. 在index.php文件中,不要加相关接口的处理逻辑, 建议只应该放针对不同参数url的分流, 例如 ? a=say_hello 接口和 ?a=say_goodbye 接口, 其处理逻辑应该分别定向到其他文件中.

index.php请求拦截逻辑如:

<?php

$url = 'http://www.macro-c.cn/wordpress/';

if(count($_GET)!=0)
{
$param_a = $_GET['a'];
//根据 a 参数区分不同接口
if($param_a=='check-user-first-come')
{
$url = $url.'api_test/check-user-first-come.php';
}
else if($param_a == 'book-detail' or $param_a == 'get-long-comment-info')
{
$url = $url.'api_test/community.php';
}
else if($param_a == 'after-share')
{
$url = $url.'api_test/after-share.php';
}
else
{
//未定义的接口:代理服务器请求原接口,将返回数据转发
$url = $url.'api_test/final-url.php';
$url = $url.'?'.$_SERVER['QUERY_STRING'];
}
}
header("Location: $url");

?>

上例中php代码, 首先根据参数 a 的值不同, 重新拼接url , 将url定向到不同的处理接口, 再根据具体的需求在各个处理接口返回相应的假数据. 其中header( )方法这里的作用是url转发;

保护周边接口,降低影响范围:

注意一点, 一个app,从启动到切换到测试页面过程中,可能需要调用非常多个接口, 在自己的服务器中全部定义相关的接口是不可能的, 但此时由于已经将目标服务器的host定向到了本机, 所有的请求不会再指向原来的服务器, 此时可能造成很多页面得不到数据. 因此上例中else逻辑处, 对url进行了重新拼接,并且还原了原url的所有参数, 定向到了final-url.php中,

周边接口统一处理逻辑final-url.php形式如:

<?php
header("Content-Type: text/html;charset=utf-8");

$url_full = 'http://mapi7.dangdang.com/index.php'.'?'.$_SERVER['QUERY_STRING'];

echo file_get_contents($url_full);

?>

上例的作用是以当前服务器作为客户端做url请求, 并将结果原样返回.

这样一番操作, 就能根据url的接口不同, 返回不同类型的测试数据, 并且可以做到不影响其他接口.

拦截接口的处理逻辑:

其他接口处理函数 如 after-share.php其代码形式如下:

<?php
header("Content-Type: text/html;charset=utf-8");
include_once 'tools_headfile.php';
$task =
'{
"errorCode":0,
"errorMsg":"成功",
"hasGetReWard":"2"
}';
$str_task =
'{
"toast":"呵呵傻逼",
"btnStr":"跳任务列表",
"linkUrl":"communitytasklist://"
}';
$arrayOut = string_to_array($task);
$arrayOut_task = string_to_array($str_task);
$arrayOut['task'] = $arrayOut_task;
echo JSON($arrayOut);
?>

其中string_to_array()和JSON()都是 封装的函数, 作用是将字符串转换成php数组(键值对数组), 和将数组(键值对数组)转换成json对象.

只需基本的php知识, 方便了前端,后端,测试同学的工作. 现在, 一言不合送给测试代理的ip地址和端口号, 完

友情推荐几款工具: switch hosts很方便的切换host; sublime text 神器;filezilla神器

相关文章

  • 前端同学-少许后端知识,有效减少开发时间

    工作中,客户端的朋友难免遇到与后端关于接口数据结构问题的扯皮,大大浪费了时间,针对这点学习一点后端知识,能把多数无...

  • 构建前端Mock Server的利器/Json-Server

    痛点 项目中前端和后端通常是并行开发,为了减少等待后端接口开发的时间,我们经常需要在本地模拟后端接口用来测试前端效...

  • 本地部署easy mock实践

    前端开发中少不了数据mock,后端同学一般和我们前端同时开发,在开发初期,我们一般先和后端同学约定好接口规范,然后...

  • 前后端分离:使用RAP搭建MockServer

    MockServer可以减少前端开发对后端的依赖,提高前端开发的效率,同时也利于团队的协作。 什么是RAP? RA...

  • day01 spring起步

    1、什么是后端开发? 点击 了解什么是后端开发 点击 查看后端开发技术相关知识 2、作为一个前端或者后...

  • Day006 - 感性认识JavaScript (2018-11

    知识点梳理: Web应用后端开发 -- web前端网络数据采集 -- 爬虫和前端开发人员交互 web前端 = HT...

  • 学习笔记-1

    java前端知识 1、HTML 2、CSS 3、JAVASCRIPT java后端开发知识: 1、API网关技术 ...

  • 前端如何高效的与后端协作开发

    前端如何高效的与后端协作开发 1. 前后端分离 前端与后端的分离,能使前端的开发脱离后端的开发模式,拥有更大的自由...

  • mock.js在vue中的应用

    什么是mock.js 在前后端分离的开发环境中,前端同学需要等待后端同学给出接口及接口文档之后,才能继续开发。而M...

  • React学习笔记(1)

    虽然现在都在做前后端分离,作为后端开发还是学习下前端的知识,防止掉队太厉害。为了快速开发,准备直接用服务端开发。 ...

网友评论

      本文标题:前端同学-少许后端知识,有效减少开发时间

      本文链接:https://www.haomeiwen.com/subject/eawdgftx.html