一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

PHP服務(wù)器端API原理及示例(接口開發(fā))

 A芝蘭之室 2017-10-14

相信大家都做過PHP請求API接口獲取數(shù)據(jù),比如淘寶API,微信公眾平臺,天氣查詢,快遞查詢等,有的需要參照接口文檔根據(jù)簽名算法構(gòu)造sign(簽名),或者設(shè)置token,然后通過curl發(fā)送POST請求帶上參數(shù),獲得返回?cái)?shù)據(jù),一般是json或者xml格式。

 

但是現(xiàn)在的情況反過來了,我們要開發(fā)PHP服務(wù)器端的API接口,也就是別人請求我們,我們驗(yàn)證請求合法性,并查詢數(shù)據(jù)返回。

這種情況其實(shí)在手機(jī)app開發(fā)中用到,手機(jī)APP應(yīng)用往往需要請求PHP接口獲取數(shù)據(jù),不過這個請求一般是不用經(jīng)過驗(yàn)證的,根據(jù)不同的功能請求不同的url,通常也是get方式傳參數(shù)直接獲取數(shù)據(jù)。

本文簡單講講服務(wù)器端驗(yàn)證請求合法性的方法,和接收參數(shù)的方式。

簡單的get請求如:http://www./api/get_cat?id=2,請求這個網(wǎng)址會返回一些數(shù)據(jù),無論是誰用什么編程語言請求都能得到數(shù)據(jù)。

那么在需要驗(yàn)證合法性的情況下這樣顯然是不行的。所以需要一個秘鑰,這個時(shí)候往往用POST方式請求url。

比如傳遞的參數(shù)中有個簽名sign,值是98888,當(dāng)然生成sign的方式很多而且不可能這么簡單,這里只是隨便寫,那么服務(wù)器端接收到sign是98888,假如我們約定98888就是合法的,這個時(shí)候判斷sign是否為98888就可以驗(yàn)證這是合法請求了。

但是這樣也太簡單了,一下子就被破解了,設(shè)置這個sign就毫無意義了。所以要有一個生成sign的規(guī)則,請求的時(shí)候根據(jù)這個規(guī)則生成sign傳參,服務(wù)器端接收的時(shí)候也根據(jù)這個規(guī)則生成sign,如果生成的sign一致,表明這是合法請求。每次請求都會帶上sign進(jìn)行驗(yàn)證。

還有一種驗(yàn)證叫token,第一次請求的時(shí)候驗(yàn)證token,在一定時(shí)間內(nèi)不用再次驗(yàn)證。這要分兩步,第一步先請求獲取token的接口得到token,第二步才是請求具體接口的功能,需要帶上token傳參。由于第一次請求token的時(shí)候,服務(wù)器端先把token存儲起來了再返回的,所以后面的請求判斷傳過來的token是否存在就可以驗(yàn)證了。

許多接口開發(fā)都同時(shí)使用兩者方式保證私密和安全。

還有一點(diǎn),發(fā)送POST請求往往使用PHP的CURL模塊,比如對方通過curl發(fā)送POST請求,curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string),這里$post_string是傳PHP數(shù)組的形式好,還是json格式呢?

如果是傳PHP數(shù)組,我這邊直接$_POST[‘xx’]獲取參數(shù),如果是傳的json格式,我這邊好像要用file_get_contents(‘php://input’, ‘r’)獲取傳過來的json數(shù)據(jù),然后解析json得到參數(shù)。

什么情況下用第二種?

這個曾經(jīng)在網(wǎng)上提問過,看看大家怎么回答:


對PHP來說 JSON和數(shù)組有時(shí)候真的只是一行代碼的區(qū)別,如果我寫可能直接回用第一種。

我覺得你想你的代碼簡潔一點(diǎn)可以用第二種,我記得weixin的php sdk好像類似就是第二種(當(dāng)然那是xml格式)

還有如果對方使用面向?qū)ο笾苯有蛄谢鰜淼膉son的話,用json會讓他的代碼更簡潔一點(diǎn)。

第一種做法,是傳輸?shù)氖莊orm表單POST協(xié)議,PHP會把PHP數(shù)組變成HTTP表單的格式,跨語言通用,但是這種并不是主流的API協(xié)議,而更像是模擬提交表單。

絕大多數(shù)API協(xié)議會用JSON POST,第二種做法,即在HTTP Body里放JSON數(shù)據(jù)。也是跨語言的,但作為API更友好。

第一種方法,直接PHP curl,如果數(shù)據(jù)內(nèi)容沒處理好,數(shù)組value里傳了 @/xxx/xxx 這樣的內(nèi)容,curl會把服務(wù)器上的本地文件傳出去,注意防范。

x-www-form-urlencoded是RFC標(biāo)準(zhǔn),沒什么不兼容的,豈止跨語言,還跨越時(shí)空。JSON這種是近幾年想出來的,不是標(biāo)準(zhǔn),用著方便而已。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    免费一区二区三区少妇| 国产精品久久精品毛片| 日本久久精品在线观看| 国产亚洲欧美另类久久久| 欧美日韩精品久久第一页| 国产91人妻精品一区二区三区| 亚洲欧美日本成人在线| 欧美整片精品日韩综合| 日韩性生活片免费观看| 中国黄色色片色哟哟哟哟哟哟| 99久久精品免费看国产高清| 午夜精品国产一区在线观看| 国产精品成人免费精品自在线观看| 日本不卡在线一区二区三区| 粉嫩内射av一区二区| 国产精品一区二区三区日韩av | 欧美日韩乱一区二区三区| 国产一区二区三区午夜精品 | 国产成人精品视频一二区| 91人妻丝袜一区二区三区| 久久亚洲午夜精品毛片| 国产级别精品一区二区视频| 欧美大粗爽一区二区三区| 黑人粗大一区二区三区| 国产精品推荐在线一区| 欧美成人免费一级特黄| 中文字幕日韩欧美亚洲午夜 | 亚洲中文在线男人的天堂| 日韩亚洲精品国产第二页| 亚洲欧美日产综合在线网| 日韩一区二区三区18| 久久少妇诱惑免费视频| 青青久久亚洲婷婷中文网| 日本美国三级黄色aa| 成人国产激情在线视频| 亚洲中文字幕三区四区| 日韩成人高清免费在线| 国产熟女一区二区不卡| 国产又粗又猛又黄又爽视频免费| 国产成人免费高潮激情电| 亚洲黄香蕉视频免费看|