收藏此站 联系我们 网站
当前位置:首页» 行业新闻 » 【建站服务】永兴网站建设【永兴网络公司】永兴做网站、永兴微信公众号开发、永兴网站设计、永兴小程序制作-域名申请

【建站服务】永兴网站建设【永兴网络公司】永兴做网站、永兴微信公众号开发、永兴网站设计、永兴小程序制作-域名申请

作者: 风兰 . 阅读量: 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"
        ]
    }复制代码

2.2.5 扩展你的项目

调整响应结构

默认返回的是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>复制代码

2.3 细说ADM模式

前面我们已经学习了接口请求与接口响应,若把接口服务视为一个黑盒子,我们相当于已经了解这个黑盒子的输入与输出。但作为专业的软件开发工程师,我们还应洞悉这个黑盒子其中的构造、原理和细则。在全方位掌握整个接口服务流程的构建后,才能更清楚该如何编排代码的层级,同时通过关注点分离对每个层级的职责有个统一的共识,从而便于产生灵活、规范、高质量、容易维护的代码。

2.3.1 何为Api-Domain-Model模式?

在传统Web框架中,惯用MVC模式。可以说,MVC模式是使用最为广泛的模式,但同时也可能是误解最多的模式。然而,接口服务这一领域,与传统的Web应用所面向的领域和需要解决的问题不同,最为明显的是接口服务领域中没有View视图。如果把MVC模式生搬硬套到接口服务领域,不但会产生更多对MVC模式的误解,还不利于实际接口服务项目的开发和交付。

仔细深入地再思考一番,接口服务除了需要处理输入和输出,以及从持久化的存储媒介中提取、保存、删除、更新数据外,还有一个相当重要且不容忽视的任务——处理特定领域的业务规则。而这些规则的处理几乎都是逻辑层面上对数据信息的加工、转换、处理等操作,以满足特定场景的业务需求。对于这些看不见,摸不着,听不到的领域规则处理,却具备着交付有价值的业务功能的使命,与此同时也是最为容易出现问题,产生线上故障,引发损失的危险区。所以,在接口服务过程中,我们应该把这些领域业务规则的处理,把这些受市场变化而频繁变动的热区,单独封装成一层,并配套完备的自动化测试体系,保证核心业务的稳定性。

基于以上考虑,在MVC模式的基础上,我们去掉了View视图层,添加了Domain领域业务层。从而涌现了Api-Domain-Model模式,简称ADM模式。

简单来说,

  • Api层 称为接口服务层,负责对客户端的请求进行响应,处理接收客户端传递的参数,进行高层决策并对领域业务层进行调度,最后将处理结果返回给客户端。

  • Domain层 称为领域业务层,负责对领域业务的规则处理,重点关注对数据的逻辑处理、转换和加工,封装并体现特定领域业务的规则。

  • Model层 称为数据模型层,负责技术层面上对数据信息的提取、存储、更新和删除等操作,数据可来自内存,也可以来自持久化存储媒介,甚至可以是来自外部第三方系统。

下面再分别展开说明。



永兴网站建设永兴网络公司永兴做网站、永兴微信公众号开发、永兴网站设计、永兴小程序制作


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站

全国服务热线
18114747181
二维码
手机端二维码
上往建站
地址:全国各地都有驻点商务 |  网站建设上往建站
在线咨询QQ:1120768800
 
QQ在线咨询
售前咨询热线
18114747181
营销顾问
营销顾问
售后服务热线
400-000-1116
售后服务
售后服务