PHP網(wǎng)站怎么調(diào)用別家的API?
首先我們要知道的是,API有很多種表現(xiàn)形式,對(duì)于不同形式的API,調(diào)用方式也是不同的。
API常見(jiàn)模式1、RPC(遠(yuǎn)程過(guò)程調(diào)用協(xié)議)
RPC是一種進(jìn)程遠(yuǎn)程調(diào)用的方式,主要用于異構(gòu)平臺(tái)間的進(jìn)程通信,是Client/Server模式。RPC可以使用多種協(xié)議(如:HTTP協(xié)議、自定義協(xié)議等)和序列化方式(如:JSON、XML、二進(jìn)程),RPC是基于TCP或者自定義協(xié)議來(lái)實(shí)現(xiàn)的,性能較高,但耦合度也較高。
2、SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)
SOAP其實(shí)是基于HTTP和XML的實(shí)現(xiàn),基于HTTP協(xié)議。在耦合度、維護(hù)性、擴(kuò)展性上比RPC要好,但是性能上會(huì)低于RPC,特別是XML這種消息傳遞的方式會(huì)影響性能。
雖說(shuō)SOAP是基于HTTP的,但是SOAP提供了Session/Cookie機(jī)制來(lái)維持狀態(tài),所以一些需要狀態(tài)的(如:調(diào)用某些API前需要進(jìn)行認(rèn)證)業(yè)務(wù)中還能看見(jiàn)SOAP的身影。
3、RESTful
RESTful其實(shí)是一種架構(gòu)風(fēng)格,它不是一種標(biāo)準(zhǔn)!RESTful可以理解為是Json+HTTP+POST/GET/PUT/DELETE 的組合,同樣是基于HTTP協(xié)議的。REST相比于SOAP和RPC,更加簡(jiǎn)潔明了。
RESTful的無(wú)狀態(tài)特性使得其適合在分布式環(huán)境中使用,所以現(xiàn)在的API都推薦使用RESTful設(shè)計(jì)風(fēng)格。
PHP中如何調(diào)用第三方提供的API?上面講到了,API有很多種模式,對(duì)于不同模式我們調(diào)用的方法就不同。下面介紹下PHP如何計(jì)用常見(jiàn)模式的API。
1、RPC
如果對(duì)方提供的API是RPC形式的,那一般都會(huì)提供PHP版本的Client給你,你按說(shuō)明進(jìn)行調(diào)用即可。
另外PHP生態(tài)中也有不少RPC框架,如:PHPRPC、Thrift、gRPC等。
2、SOAP
PHP 5內(nèi)置有php_soap擴(kuò)展,此擴(kuò)展實(shí)現(xiàn)了PHP對(duì)Web Services的支持。
3、RESTful
說(shuō)白了RESTful就是HTTP協(xié)議,只不過(guò)使用了不同的HTTP動(dòng)詞進(jìn)行請(qǐng)求區(qū)分,我們推薦使用cURL類庫(kù)進(jìn)行RESTful API的請(qǐng)求。
不建議使用file_get_contents 函數(shù)進(jìn)行HTTP類型的API調(diào)用,很多人習(xí)慣使用此函數(shù)調(diào)用HTTP API,但是又不設(shè)置超時(shí)時(shí)間,當(dāng)API不穩(wěn)定時(shí)嚴(yán)重影響了網(wǎng)站速度。
以上就是我的觀點(diǎn),對(duì)于這個(gè)問(wèn)題大家是怎么看待的呢?歡迎在下方評(píng)論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),歡迎關(guān)注我了解更多科技知識(shí)!