主頁 > 知識(shí)庫 > PHP服務(wù)器端API原理及示例講解(接口開發(fā))

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

熱門標(biāo)簽:400電話申請(qǐng)方法收費(fèi) 南寧高頻外呼回?fù)芟到y(tǒng)哪家好 長沙crm外呼系統(tǒng)業(yè)務(wù) 專業(yè)電話機(jī)器人批發(fā)商 江蘇外呼電銷機(jī)器人報(bào)價(jià) 深圳外呼系統(tǒng)收費(fèi) 電話機(jī)器人危險(xiǎn)嗎 離石地圖標(biāo)注 400電話辦理福州市

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

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

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

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

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

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

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

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

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

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

還有一點(diǎn),發(fā)送POST請(qǐng)求往往使用PHP的CURL模塊,比如對(duì)方通過curl發(fā)送POST請(qǐng)求,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ù)。

什么情況下用第二種?

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

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

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

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

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

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

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

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

以上這篇PHP服務(wù)器端API原理及示例講解(接口開發(fā))就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 如何用PHP編寫簡單的api數(shù)據(jù)接口
  • php的api數(shù)據(jù)接口書寫實(shí)例(推薦)
  • PHP保姆級(jí)API制作教程,不會(huì)剁手

標(biāo)簽:株洲 南昌 濱州 南京 興安盟 太原 白酒營銷 曲靖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP服務(wù)器端API原理及示例講解(接口開發(fā))》,本文關(guān)鍵詞  PHP,服務(wù)器,端,API,原理,及,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP服務(wù)器端API原理及示例講解(接口開發(fā))》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP服務(wù)器端API原理及示例講解(接口開發(fā))的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章