PHP 板


LINE

看板 PHP  RSS
※ 引述《tas72732002 (葱头)》之铭言: : 目前的网站常用呼叫的api方式大都是 xxx.xxx.xxx.xxx/api/func/?para = demo : 注 : func 是功能名称或class ~ : 但目前我的的写法是 xxx.xxx.xxx.xxx/api/protal.php?para = demo : 请问要如何改写才能改成上述的格式 ? : 我的改法 : : (1) 将所有访问都只到处理router那支, 这必须在 nginx 或 apache设定转址 : (2) router.php 根据func与参数呼叫指定的 class : 以上是我的改法, 不知道一般做法是否是这样 : 到我好奇的是, 两者差在哪边啊, 有什麽好处吗, 使用後者还要多转一次网址 ~ : 不太清楚好处在哪里 ? 想想还有用回的好了,有错的话请指正,这是依照我的经验来看的。 很多framework都有处理路由 以ci来说不设计route也不做index.php的处理前 假设你有一个controller,叫做blog,其中有一个show的函式 路径可能会像这样: http://hostname/index.php/blog/show 不过通常我们都会把index.php用.htaccess来滤掉变成 http://hostname/blog/show 也习惯上不会再使用get的网址模式例如: http://hostname/blog/show/?param1=helloworld&param2=wonderful 会改成如下: http://hostname/blog/show/helloworld/wonderful 也就是後续直接当做参数抛进show这个method class blog{ function show($param1,$param2){ your code... } } 再来就是framework会提供的路由设计例如: $route['blog/(:any)/(:any)'] = 'blog/show/$1/$2' 於是可以简化成: http://hostname/blog/helloworld/wonderful 不过到这边其实都谈不上restful……… 因为你提供网址通常要的就只是一个页面。 然而restful的请求格式通常就是要在路径上包含请求的栏位名称和一些要求的格式 例如: http://resthostname/blog/show/name/ptt/address/taipei/format/json 上述分开来看格式就是: resthostname => server的位置 blog => class名称 show => method 名称 name => 送出请求参数的key1,其值为ptt address => 送出请求参数的key2,其值为taipei format => 要求response回来的资料为json格式(通常另一种就是xml) 其实也就是说你送出给伺服器的资料就是name = ptt,address = taipei 伺服器会就你传送的资料来判定是不是符合他的规则以及该传给你资料还是抛错误给你。 如果符合所需的资料要求以及使用你传的内容找到符合的资料。 最後就会依据你要求的格式请求将资料以既定的格式回传给你。 用在那? 不论是是ajax或是手机装置乃至於不同的程式语言间的资料传递传换。 都遵循着相同的格式要求。 不同的语言之间只要做对应的资料转换就可以顺利取回内容。 通常较严谨的restful甚至你得将依照其规范压密的内容传过去解密。 他才会传给你正确的资料。 不过,并不是表示restful的设计是一定按照这样的请求格式。 即使你打算用http://resthostname/blog/ptt/taipei/json 想简化成这样也行。 总之概念上来说你要怎麽让资料能顺利的请求并能够大幅降低伺服器消耗。 在开放资料的介面来说,其实就是告诉对方请求的url格式,照这个规则就可以 取回需求的资料内容。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.204.108.111
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1446707172.A.A08.html
1F:推 tas72732002: 那nginx或apache是不是都会先导到router那支做处理 11/05 15:32
并非如此。 事实上在处理这些事的根本都是index.php 是这只档案去呼叫其他处理的模组功能,当中包含routes.php 滤掉index.php只是让他在url看不到,但事实上真正一开始跑的都是它。
2F:推 tas72732002: 所以nginx要设定不管路径是什麽都要转到index.php吗 11/05 15:46
其实跟apache或是eginx的设定没有什麽必然的关系。 要说唯一的关系就是利用.htaccess让index.php「隐藏」。 事实上index.php还是有被执行,该说其实他「一定」要被执行。 在index.php之後的网址其实会被当成segments来分析其内容对应 通常segments[0]会被视为class,[1]被视为method、[2]之後就一律视为参数。 在不同的框架中都会去分析这些路径,再来才是重新写入不同框架所采取的规则。 简单来说,如果有理解到这一层,自己要硬干出一个基本的框架也不会是困难的问题。 不过当然啦,通常真的要做一个框架就会包山包海包你不无聊就是了。 ※ 编辑: tkdmaf (123.204.108.111), 11/05/2015 16:20:59
3F:推 tas72732002: 了解 你解释很清楚 ~ 谢谢 11/05 16:34
4F:推 xdraculax: 推ci 11/06 10:22
---- 这一段因应推文者请求删除 ---- ※ 编辑: tkdmaf (123.204.108.111), 11/06/2015 23:19:52
5F:推 hpo14: 感谢,你说得很清楚 11/08 11:13







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP