
发表日期: 2021-04-27 09:08:50 浏览次数:113
沛县网站制作【沛县网站优化】沛县建网站、沛县微信公众号运营、沛县网页设计、沛县微信小程序商城
沛县,简称“沛”,因古有“沛泽”而得名,江苏省徐州市下辖县,位于徐州市西北部,处于苏、鲁两省交界之地,东靠微山湖,西邻丰县,南接铜山区,北接山东省鱼台,处于华北平原的东南边缘和淮海经济区的西北部位。总面积1806平方公里, [1-3] 总人口130万(2016年)。2019年,沛县完成地区生产总值777.96亿元,增长6.0%。 [4]
沛县水脉纵横,是滨湖之城、绿色之都,沛城东距中国北方最大的淡水湖—微山湖不足5公里,拥有62公里湖岸线、400平方公里湖面。 [2]
沛县历史悠久、资源富集,是江苏省和华东地区的煤炭主产地,探明煤储量24亿吨,年产原煤1200万吨,占全省70%。沛县是首批全国文明县城、全国科技进步先进县。荣获全国百强县、全国工业百强县、国家园林县城、国家知识产权强县工程试点县、中国最佳生态旅游县等称号。 [5]
2019年,沛县位居全国县域经济与县域综合发展第32位,综合实力百强县市第65位、全国科技创新百强县市第57位、经济竞争力百强第44位。 [6-7] 2020年7月29日,入选2017-2019周期国家卫生乡镇(县城)命名名单。 [8] 2020年8月,被授予2019年“四好农村路”省级示范县称号。 [9] 2020年12月,入选全国县域经济综合竞争力100强。
那么,便可以得到默认请求接口服务的URI,但明显可以看到在接口服务名称service参数中,每次请求时都需要重复加上“.Go”这一后缀,不仅影响美观,而且显得冗余。解决的方法很简单,可以使用前面所学的知识,定制我们自己专属的service格式。同时,结合Nginx的Rewrite规则,可以定制一种更简单的请求方式。先来看下最终的请求效果。
表7-1 请求用户模块接口服务的URI
接口服务 | 默认的URI | 定制后更精简的URI |
|---|---|---|
用户登录 | /demo/?service=User_Login.Go | /demo/user_login |
用户注册 | /demo/?service=User_Register.Go | demo/user_register |
会话检测 | /demo/?service=User_Check.Go | demo/user_check |
可以看到,定制后请求接口服务的URI更为精简,并且也更符合URI的格式,即全部使用小写字母,并用下划线分割。
要达到这样的效果,需要结合Nginx的Rewrite规则和service格式的定制。首先,对于Nginx,需要添加下面这样的Rewrite规则:
if (!-e $request_filename) {
rewrite ^/demo/(.*) /demo/?service=$1;
}复制代码配置后,记得需要重启Nginx。
接下来,是对service格式的定制。这里需要继承请求量PhalApi_Request,然后重写PhalApi_Request::getService()方法,实现定制化的工作。代码实现如下:
// Forever$ vim ./Demo/Common/Request.php<?phpclass Common_Request extends PhalApi_Request {
public function getService() {
$service = parent::getService();
// 兼容默认格式
if (strpos($service, '.')) {
return $service;
}
// 定制后的格式:大写转换 + 后缀
$className = preg_replace("/(?:^|_)([a-z])/e", "strtoupper('\\0')", $service);
$newService = $className . '.Go';
return $newService;
}}复制代码实现好扩展的子类后,别忘了要在入口文件合适的地方进行注册。如下所示:
// Forever$ vim ./Public/demo/index.phpDI()->loader->addDirs(array('Demo'));DI()->request = 'Common_Request';复制代码此时,在浏览器使用新定制后的service格式访问,便能达到与默认形式同样的访问效果。
大部分接口服务都会需要接口参数,在一个接口服务,一个文件的情况下,对于参数规则的配置,主要区别在于代码排版方面。不同于之前把全部配置写在一行的做法,在这里更倾向于将配置写成多行,从而提供更统一、更整洁的写法。例如上面登录接口服务User_Login.Go中所需要的登录账号与登录密码这两个参数,写法如下:
class Api_User_Login extends PhalApi_Api {
public function getRules() {
return array(
'go' => array(
'user' => array(
'name' => 'user',
'require' => true,
'min' => '1',
'desc' => '登录账号',
),
'pass' => array(
'name' => 'pass',
'require' => true,
'min' => '6',
'desc' => '登录密码',
),
),
);
}
... ...复制代码并且,对于各个参数规则,通用配置项的顺序,从上到下,分别是:
参数名称 name
是否必须 require
默认值 default
最小值 min
最大值 max
不同类型参数的扩展配置项,如:regex,range,format,ext等
数据源 source
说明信息 desc
在实现Api接口层时,通常来说,分为以下这些步骤:
1、定义返回结果的顶级字段结构
2、初始化Domain实例并调用
3、将结果依次进行赋值
4、返回结果
例如,在实现用户登录时,其代码片段为:
class Api_User_Login extends PhalApi_Api {
public function go() {
$rs = array('code' => 1, 'user_id' => 0, 'token' => '', 'tips' => '');
$domain = new Domain_User();
$userId = $domain->login($this->user, $this->pass);
if ($userId <= 0) {
$rs['tips'] = '登录失败,用户名或密码错误!';
return $rs;
}
$token = DI()->userLite->generateSession($userId);
$rs['code'] = 0;
$rs['user_id'] = $userId;
$rs['token'] = $token;
return $rs;
}}复制代码为了方便开发人员明确所返回的结构字段,在函数的第一行可定义结果的顶级字段,并使用默认值进行填充。结合上面的代码,可以看到,这里定义了返回结果的字段中有操作码、用户ID、登录凭证和提示信息。
$rs = array('code' => 1, 'user_id' => 0, 'token' => '', 'tips' => '');复制代码然后初始化了Domain_User领域业务类的实例,并传入登录账号和登录密码尝试进行登录。如果登录失败,则使用卫语句直接失败返回,并进行相应的提示。如果登录成功,则通过User扩展生成一个新的会话凭证。
$domain = new Domain_User(); $userId = $domain->login($this->user, $this->pass); ... ... $token = DI()->userLite->generateSession($userId);复制代码
调用领域业务类的实例完成业务功能后,接下来需要把获得的结果以及客户端需要的数据赋值给返回结果变量中。并且,最初定义结果的字段顺序,与实现过程中的获取顺序,以及最后赋值的顺序应该是保持一致的。如这里,依次是赋值了操作码、用户ID和登录凭证。对于不需要进行赋值的结果字段,则可以忽略路过,如这里的tips错误提示字段。

服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878