发表日期: 2021-04-26 09:39:13 浏览次数:201
如皋网络公司哪家好【如皋企业网站百度SEO推广公司】如皋做网站开发价格、如皋淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、如皋高端企业网站页面制作设计专业公司需要多少钱
如皋市,简称“如”或“皋”,江苏省辖县级市,由南通市代管,江苏省历史文化名城。地处长江三角洲北翼,位于南通、泰州、苏州三市交界处,南与张家港市隔江相望,北与海安市、东与如东县连接、东南与南通市通州区毗邻,西与泰兴市、西南与靖江市接壤。全市总面积1477平方公里(不含长江水面),长江水面99平方千米。如皋长江岸线全长48千米,可直接利用长江深水岸线18.6千米。
如皋市被国际自然医学会评为世界六大长寿乡之一。 [1] 如皋市户籍人口约142万。截至2021年1月1日,全市80周岁以上高龄老人68031人,90周岁以上高龄老人10150人,百岁老人达525位,其中105岁以上达16位。 [2]
2019年6月17日,如皋被中华人民共和国住房和城乡建设部选取作为开展规范城市户外广告设施管理工作试点城市。 [3] 2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国绿色发展百强县市、2019年度全国新型城镇化质量百强县市、2019全国营商环境百强县。 [4-6] 2020年12月,社科院发布《全国县域经济综合竞争力100强》,如皋排名第31 [7] 。
请在浏览器,打开以下链接并访问。
http://api.phalapi.net/shop/checkApiParams.php?service=Goods.Snapshot复制代码
可以看到类似这样的截图效果。

图2-3 接口服务Goods.Snapshot的在线说明文档
由前面创建的类和编写的代码、配置的规则以及文档注释,最终生成了这份接口文档。即使在未完成接口服务的开发情况下,通过此在线文档,使用方也能明确接口服务的功能,以及需要传递的参数和返回结果的说明,从而不影响他们的开发进度。
温馨提示:这里省略了公共参数中的签名参数和版本参数。关于在线文档的使用,后续会再进行详细说明。
在完成了接口服务定义后,可以说,我们为讲述故事铺垫好了背景,部署好了场景上下文。接下来,我们推荐遵循测试驱动开发的理念,在意图导向编程的引导下继续完成故事的讲述。主要的方向是,为了验证业务场景的正确性,应该先编写不断引导我们前往正确目的地的单元测试,再开始编写具体的代码。
继续上面的获取商品快照信息接口服务,我们可以使用PhalApi提供的脚本命令快速生成测试骨架。其用法如下:
$ cd ./Shop/Tests$ php ../../PhalApi/phalapi-buildtest ../Api/Goods.php Api_Goods ./test_env.php > ./Api/Goods_Test.php复制代码
温馨提示:关于phalapi-buildtest脚本命令的使用,详细请见3.5.2 phalapi-buildtest命令。
上面主要是生成了Goods.Snapshot接口服务对应的测试骨架代码,并保存在文件./Api/Goods_Test.php里。然后,稍微修改完善生成的测试代码。
// $ vim ./Shop/Tests/Api/Goods_Test.phprequire_once dirname(__FILE__) . '/../test_env.php'; // 调整测试环境文件的加载... ...
public function testSnapshot()
{
// Step 1. 构建请求URL
$url = 'service=Goods.Snapshot';
$params = array(
'id' => 1,
);
// Step 2. 执行请求
$rs = PhalApi_Helper_TestRunner::go($url, $params);
//var_dump($rs);
//Step 3. 验证
$this->assertNotEmpty($rs);
$this->assertArrayHasKey('goods_id', $rs);
$this->assertArrayHasKey('goods_name', $rs);
$this->assertArrayHasKey('goods_price', $rs);
$this->assertArrayHasKey('goods_image', $rs);
}复制代码上面的单元测试,根据构建-执行-验证模式,对商品ID为1的信息进行验证,主要是验证是否包含goods_id、goods_name、goods_price、goods_image这四个字段。
试执行一下此单元测试,明显是失败的。
Tests$ phpunit ./Api/Goods_Test.php .FThere was 1 failure:1) PhpUnderControl_ApiGoods_Test::testSnapshotFailed asserting that a NULL is not empty./path/to/Shop/Tests/Api/Goods_Test.php:56复制代码
温馨提示:PHPUnit的安装请参考安装 PHPUnit 。
到这里,我们讲述了一个失败的故事,因为这个故事讲不下去了。但我们知道错在哪里。要想让这个故事讲得通,我们可以先简单模拟一些数据,即先讲一个假故事。
修改Goods.Snapshot接口服务的源代码,返回以下模拟的商品数据。
// $ vim ./Shop/Api/Goods.php
public function snapshot() {
return array(
'goods_id' => 1,
'goods_name' => 'iPhone 7 Plus',
'goods_price' => 6680,
'goods_image' => '/images/iphone_7_plus.jpg',
);
}复制代码此时,再运行单元测试,是可以通过的了。到这一步,虽然我们最终尚未实现接口服务的开发,但已经是非常 接近了。因为我们已经提供了在线接口说明文档给使用方,现在又可以有一份模拟的接口返回数据,虽然是假的。而这些文档和模拟数据,都已经可以帮忙客户端完成主流程的业务功能开发。
接下来,让我们再进一步,把这个故事讲得更真实,更动听,更丰满一点。
还记得我们Api层的职责吗?Api层主要负责请求响应、进行决策和高层的调度。下面是Goods接口层调整后的代码实现:
// $ vim ./Shop/Api/Goods.php
public function snapshot() {
$domain = new Domain_Goods();
$info = $domain->snapshot($this->id);
return $info;
}复制代码即根据客户端传递的商品ID,把具体的快照信息提取委托给领域业务层Domain_Goods进行,最后返回结果给客户端。
那么什么是领域业务层呢?

如皋网络公司哪家好【如皋企业网站百度SEO推广公司】如皋做网站开发价格、如皋淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、如皋高端企业网站页面制作设计专业公司需要多少钱