【建站服务】庆阳网站制作【庆阳网站优化】庆阳建网站、庆阳微信公众号运营、庆阳网页设计、庆阳微信小程序商城-域名申请
作者: 风兰 . 阅读量: 5 . 发表时间:2022-09-20 15:50:01
上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
庆阳网站制作【庆阳网站优化】庆阳建网站、庆阳微信公众号运营、庆阳网页设计、庆阳微信小程序商城

庆阳,习称“陇东”,是甘肃省辖地级市,甘肃的石油天然气化工基地、长庆油田主产区。截至2020年7月,辖1个区、7个县,总面积27119平方公里,总人口265万,常住人口227.88万人,城镇人口90.98万。
庆阳地处中国西部地区、甘肃省东部,东接陕西省的宜君、黄陵、富县、甘泉、志丹等县;北邻陕西省定边、吴起、志丹县及宁夏回族自治区盐池县;西与宁夏回族自治区固原市原州区、彭阳县、同心县接壤;南与甘肃省的泾川县及陕西的彬州市、长武、旬邑县相连。被誉为“红色圣地、岐黄故里、农耕之源、能源新都”,素有“陇东粮仓”的美称。 [1-2]
庆阳市是是“环江翼龙”和“黄河古象”的故乡,中国“第一块旧石器”的出土地,中华民族早期农耕文明的发祥地之一,中医药文化的发祥地、中医鼻祖岐伯的出生地,甘肃的革命老区,长庆油田的发源地。
2019年,庆阳市完成生产总值742.94亿元,同比增长5.3%。 [3] 2020年,庆阳市实现地区生产总值754.73亿元,比2019年增长4.3%。
假设请求的接口服务链接是:
/shop/?service=Welcome.Say&version=1.2.3
则会按以下方式生成并验证签名。
1、排除签名参数(默认是sign)
?service=Welcome.Say&version=1.2.3
2、将剩下的全部参数,按参数名字进行字典排序
service=Welcome.Sayversion=1.2.3
3、将排序好的参数,全部用字符串拼接起来
"Welcome.Say1.2.3" = "Welcome.Say" + "1.2.3"
4、进行md5运算
35321cc43cfc1e4008bf6f1bf = md5("Welcome.Say1.2.3")5、追加签名参数
?service=Default.Index&username=dogstar&sign=5321cc43cfc1e4008bf6f1bf
开启默认签名后,需要按以上算法生成签名sign,并且在每次请求接口服务时加上此参数。在缺少签名或者签名错误情况下,会提示类似以下的错误。
{ "ret": 406, "data": [], "msg": "非法请求:签名错误"}细心的读者会发现,对于默认的接口服务Default.Index是不需要进行签名验证的,这是因为在接口服务白名单中进行了配置。对于配置了白名单的接口服务,将不会触发过滤器的调用。
接口服务白名单配置是:app.service_whitelist,即配置文件./Config/app.php里面的service_whitelist配置,其默认值是:
'service_whitelist' => array( 'Default.Index', ),
配置的格式有以下四种。
表2-4 接口服务白名单匹配类型
类型 | 配置格式 | 匹配规则 | 示例及说明 |
|---|---|---|---|
全部 |
| 匹配全部接口服务(慎用!) | 如果配置了此规则,即全部的接口服务都不触发过滤器。 |
方法通配 |
| 匹配某个类的任何方法 | 即Api_Default接口类的全部方法 |
类通配 |
| 匹配全部接口类的某个方法 | 即全部接口类的Index方法 |
具体匹配 |
| 匹配指定某个接口服务 | 即Api_Default::Index() |
如果有多个生效的规则,按短路判断原则,即有任何一个白名单规则匹配后就跳过验证,不触发过滤器。
以下是更多的示例:
'service_whitelist' => array( '*.Index', // 全部的Index方法 'Test.*', // Api_Test的全部方法 'User.GetBaseInfo', // Api_User::GetBaseInfo()方法 ),
配置好上面的白名单后,以下这些接口服务全部不会触发过滤器:
// 全部的Index方法?service=Default.Index?service=User.Index// Api_Test的全部方法?service=Test.DoSth ?service=Test.Hello ?service=Test.GOGOGO// Api_User::GetBaseInfo()方法?service=User.GetBaseInfo
虽然我们约定统一使用?service=Class.Action的格式来传递接口服务名称,但如果项目有需要,也可以采用其他方式来传递。例如使用斜杠而非点号进行分割:?service=Class/Action,再进一步,使用r参数,即最终接口服务的参数格式为:?r=Class/Action。
如果需要采用其他传递接口服务名称的方式,则可以重写PhalApi_Request::getService()方法。以下是针对改用斜杠分割、并换用r参数名字的实现示例:
// $ vim ./Shop/Common/Request/Ch1.php<?phpclass Common_Request_Ch1 extends PhalApi_Request { public function getService() { // 优先返回自定义格式的接口服务名称
$service = $this->get('r'); if (!empty($service)) { return str_replace('/', '.', $service);
} return parent::getService();
}
}实现好自定义的请求类后,需要在项目的入口文件./Public/shop/index.php进行注册。
// $ vim ./Public/shop/index.php//装载你的接口DI()->loader->addDirs('Shop');
DI()->request = new Common_Request_Ch1();这样,除了原来的请求方式,还可以这样请求接口服务。
表2-5 使用?r=Class/Action格式定制后的方式
原来的方式 | 现在的方式 |
|---|---|
/shop/?service=Default.Index | ?r=Default/Index |
/shop/?service=Welcome.Say | ?r=Welcome/Say |
这里有几个注意事项:
1、重写后的方法需要转换为原始的接口服务格式,即:Class.Action
2、为保持兼容性,子类需兼容父类的实现。即在取不到自定义的接口服务名称参数时,应该返回原来的接口服务。
除了在框架编写代码实现其他接口服务的传递方式外,还可以通过Web服务器的规则Rewirte来实现。假设使用的是Nginx服务器,那么可以添加以下Rewrite配置。
if ( !-f $request_filename )
{ rewrite ^/shop/(.*)/(.*) /shop/?service=$1.$2;
}重启Nginx后,便可得到以下这样的效果。
表2-6 使用Nginx服务器Rewrite规则定制后的方式
原来的方式 | 现在的方式 |
|---|---|
/shop/?service=Default.Index | /shop/default/index |
/shop/?service=Welcome.Say | /shop/welcome/say |
此外,还有第三种指定传递方式的方案。使用第三方路由规则类库,然后通过简单的项目配置,从而实现更复杂、更丰富的规则定制。这部分后面会再进行讨论。
庆阳网站制作【庆阳网站优化】庆阳建网站、庆阳微信公众号运营、庆阳网页设计、庆阳微信小程序商城
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站


