【建站服务】永兴网站建设【永兴网络公司】永兴做网站、永兴微信公众号开发、永兴网站设计、永兴小程序制作-域名申请
作者: 风兰 . 阅读量: 5 . 发表时间:2022-09-20 13:23:14
上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
永兴网站建设【永兴网络公司】永兴做网站、永兴微信公众号开发、永兴网站设计、永兴小程序制作
永兴县是郴州市下辖县,地处湖南省东南部、郴州市北陲,东邻资兴市,南连苏仙区,西靠桂阳县,北接安仁县及衡阳市耒阳,辖10镇4乡2街道办事处,总人口71.1万人(常住54.4万人),是郴州市人口第二大县,国家“城市矿产”示范基地。 [1]
地域狭长貌似蚕形,东西长90公里,南北宽56公里。全县土地总面积为1979.4平方公里,占湖南省土地总面积的0.93%,东部多山,西部以丘陵为主,中部丘岗平原间布,京广铁路、京珠高速公路、国道G107、省道S212纵横境内,耒水上游的便江四季通航。
2020年7月,全国爱卫会决定命名永兴县为2017-2019周期国家卫生县城。
当有未能捕捉的接口异常时,开启调试模式后,框架会把对应的异常转换成对应的返回结果,并在debug.exception中体现。而不是像正常情况直接500,页面空白。这些都是由框架自动处理的。
继续上面的示例,让我们故意制造一些麻烦,手动抛出一个异常。
// $ vim ./Shop/Api/Welcome.php
public function say() {
DI()->tracer->mark('欢迎光临');
throw new Exception('这是一个演示异常调试的示例', 501);
return 'Hello World';
}复制代码再次请求后,除了SQL语句和自定义埋点信息外,还会看到这样的异常堆栈信息。
{
"ret": 501,
"data": [],
"msg": "这是一个演示异常调试的示例",
"debug": {
"exception": [
{
"function": "say",
"class": "Api_Welcome",
"type": "->",
"args": []
},
... ...
],
"stack": ... ...,
"sqls": ... ...
}}复制代码然后便可根据返回的异常信息进行排查定位问题。
添加自定义调试信息
当需要添加其他调试信息时,可以使用DI()->response->setDebug()进行添加。
如:
$x = 'this is x';$y = array('this is y');DI()->response->setDebug('x', $x);DI()->response->setDebug('y', $y);复制代码请求后,可以看到:
"debug": {
"x": "this is x",
"y": [
"this is y"
]
}复制代码默认返回的是ret字段、data字段和msg字段。如果需要使用其他字段名称,可以重写PhalApi_Response::getResult(),然后重新注册即可。请在父类返回的基础上再作调整,以保持对调试模式和后续新增基础功能的支持。
例如,类似微信开放平台的接口一样,成功时只返回data字段,失败时则只返回ret字段和msg字段,并分别改名为status字段和errormsg字段。
// $ vim ./Shop/Common/Response/Result.php<?phpclass Common_Response_Result extends PhalAPi_Response_JSON {
public function getResult() {
$newRs = array();
$oldRs = parent::getResult();
if ($oldRs['ret'] >= 200 && $oldRs['ret'] <= 299) {
$newRs = $oldRs['data'];
} else {
$newRs['status'] = $oldRs['ret'];
$newRs['errormsg'] = $oldRs['msg'];
}
if (isset($oldRs['debug']) && is_array($newRs)) {
$newRs['debug'] = $oldRs['debug'];
}
return $newRs;
}}复制代码重写并实现后,需要重新注册DI()->response服务,这里是在Shop项目的入口文件进行重新注册。
// $ vim ./Public/shop/index.php// 调整返回结构DI()->response = 'Common_Response_Result';复制代码
随后,再访问接口服务,便可看到返回的结构已发生变化。例如访问默认接口服务?service=Default.Index,会返回:
{
"title": "Hello World!",
"content": "PHPer您好,欢迎使用PhalApi!",
"version": "1.4.0",
"time": 1495007735}复制代码除了使用JSON格式返回外,还可以使用其他格式返回结果。
例如在部分H5混合应用页面进行异步请求的情况下,客户端需要服务端返回JSONP格式的结果,则可以这样在初始化文件./Public/init.php中去掉以下注释。
if (!empty($_GET@['callback'])) {
DI()->response = new PhalApi_Response_JsonP($_GET@['callback']);}复制代码当需要返回一种当前PhalApi没提供的格式,需要返回其他格式时,可以:
1、实现抽象方法PhalApi_Response::formatResult($result)并返回格式化后结果
2、重新注册DI()->response服务
这里以扩展XML返回格式为例,简单说明。首先,添加并实现一个子类,把结果转换为XML:
// $ vim ./Shop/Common/Response/XML.php<?phpclass Common_Response_XML extends PhalApi_Response {
protected function formatResult($result) {
// TODO:把数组$result格式化成XML ...
}}复制代码温馨提示:关于数组转XML,可参考将PHP数组转成XML,或Convert array to XML in PHP。
随后,在Shop项目的入口文件中重新注册。
// $ vim ./Public/shop/index.phpDI()->response = 'Common_Response_XML';复制代码
再次请求Hello World接口服务时,可以看到结果已经改用XML返回。
<?xml version="1.0" encoding="utf-8"?><data><ret>200</ret><data>Hello World</data><msg></msg></data>复制代码
前面我们已经学习了接口请求与接口响应,若把接口服务视为一个黑盒子,我们相当于已经了解这个黑盒子的输入与输出。但作为专业的软件开发工程师,我们还应洞悉这个黑盒子其中的构造、原理和细则。在全方位掌握整个接口服务流程的构建后,才能更清楚该如何编排代码的层级,同时通过关注点分离对每个层级的职责有个统一的共识,从而便于产生灵活、规范、高质量、容易维护的代码。
在传统Web框架中,惯用MVC模式。可以说,MVC模式是使用最为广泛的模式,但同时也可能是误解最多的模式。然而,接口服务这一领域,与传统的Web应用所面向的领域和需要解决的问题不同,最为明显的是接口服务领域中没有View视图。如果把MVC模式生搬硬套到接口服务领域,不但会产生更多对MVC模式的误解,还不利于实际接口服务项目的开发和交付。
仔细深入地再思考一番,接口服务除了需要处理输入和输出,以及从持久化的存储媒介中提取、保存、删除、更新数据外,还有一个相当重要且不容忽视的任务——处理特定领域的业务规则。而这些规则的处理几乎都是逻辑层面上对数据信息的加工、转换、处理等操作,以满足特定场景的业务需求。对于这些看不见,摸不着,听不到的领域规则处理,却具备着交付有价值的业务功能的使命,与此同时也是最为容易出现问题,产生线上故障,引发损失的危险区。所以,在接口服务过程中,我们应该把这些领域业务规则的处理,把这些受市场变化而频繁变动的热区,单独封装成一层,并配套完备的自动化测试体系,保证核心业务的稳定性。
基于以上考虑,在MVC模式的基础上,我们去掉了View视图层,添加了Domain领域业务层。从而涌现了Api-Domain-Model模式,简称ADM模式。
简单来说,
Api层 称为接口服务层,负责对客户端的请求进行响应,处理接收客户端传递的参数,进行高层决策并对领域业务层进行调度,最后将处理结果返回给客户端。
Domain层 称为领域业务层,负责对领域业务的规则处理,重点关注对数据的逻辑处理、转换和加工,封装并体现特定领域业务的规则。
Model层 称为数据模型层,负责技术层面上对数据信息的提取、存储、更新和删除等操作,数据可来自内存,也可以来自持久化存储媒介,甚至可以是来自外部第三方系统。
下面再分别展开说明。
永兴网站建设【永兴网络公司】永兴做网站、永兴微信公众号开发、永兴网站设计、永兴小程序制作
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站


