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

      網友投稿 618 2025-04-01

      http://www.jb51.net/article/136816.htm


      下面小編就為大家分享一篇PHP服務器端API原理及示例講解(接口開發),具有很好的參考價值,希望對大家有所幫助

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

      但是現在的情況反過來了,我們要開發PHP服務器端的API接口,也就是別人請求我們,我們驗證請求合法性,并查詢數據返回。

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

      本文簡單講講服務器端驗證請求合法性的方法,和接收參數的方式。

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

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

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

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

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

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

      許多接口開發都同時使用兩者方式保證私密和安全。

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

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

      什么情況下用第二種?

      這個曾經在網上提問過,看看大家怎么回答:

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

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

      還有如果對方使用面向對象直接序列化出來的json的話,用json會讓他的代碼更簡潔一點。

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

      絕大多數API協議會用JSON POST,

      第二種做法,即在HTTP Body里放JSON數據。也是跨語言的,但作為API更友好。

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

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

      以上這篇PHP服務器端API原理及示例講解(接口開發)就是小編分享給大家的全部內容了

      API PHP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何在Excel中一次批量刪除超鏈接?
      下一篇:通過設置WPS表格中字母的順序填充來快速輸入字母(在wpsword表格中怎么填充序號)
      相關文章
      亚洲成人高清在线| 亚洲色无码专区在线观看| 亚洲福利在线视频| 亚洲国产日韩成人综合天堂| 亚洲成AV人在线观看网址| 亚洲AV无码专区在线观看成人| 亚洲AV无码久久久久网站蜜桃| 亚洲成在人线中文字幕| 亚洲小视频在线播放| 亚洲毛片在线免费观看| 亚洲成a人片在线观看中文!!!| 亚洲成人免费网站| 色噜噜综合亚洲av中文无码| 亚洲精品成人在线| 中文文字幕文字幕亚洲色| 亚洲六月丁香婷婷综合| 亚洲一区在线观看视频| 日本亚洲免费无线码 | jlzzjlzz亚洲jzjzjz| 精品亚洲AV无码一区二区三区| 色天使亚洲综合在线观看| 亚洲色成人网站WWW永久四虎 | 亚洲激情视频在线观看| 亚洲日本中文字幕区| 亚洲码在线中文在线观看| 亚洲午夜一区二区电影院| 中文字幕亚洲情99在线| jzzijzzij在线观看亚洲熟妇| 亚洲国产aⅴ综合网| 亚洲午夜久久久久久久久电影网| 亚洲第一极品精品无码久久| 亚洲欧洲一区二区| 亚洲乱码一二三四区麻豆| 亚洲日韩国产二区无码| 亚洲阿v天堂在线2017免费| 久久乐国产精品亚洲综合| 亚洲av中文无码乱人伦在线r▽ | gogo全球高清大胆亚洲| 亚洲日韩精品无码专区网址| 亚洲综合无码精品一区二区三区| 亚洲综合国产精品第一页|