PHP製作API介面

来源:http://www.cnblogs.com/mckangwei/archive/2017/11/23/7887269.html
-Advertisement-
Play Games

需要單一入口文件,可以使用autoload來載入 response方法用來返回json數據包 JSON_UNESCAPED_UNICODE:以字面編碼多位元組 Unicode 字元(預設是編碼成 \uXXXX)。自 PHP 5.4.0 起生效。 Auth類用來檢測傳值是否正確,這裡用了兩個檢測參數的方 ...


需要單一入口文件,可以使用autoload來載入

 

 1 <?php
 2     //獲取get參數
 3     $m = !empty($_GET['m'])?$_GET['m']:'Index';
 4     $a = !empty($_GET['a'])?$_GET['a']:'index';
 5     
 6     //引入類庫
 7     include './Libs/config.php';
 8     include './Libs/Model.class.php';
 9     include './Libs/Auth.php';
10     include './Libs/Tool.php';
11     
12     //調用方法檢測參數是否完整
13     Auth::CheckTime();
14     Auth::CheckSign();
15     
16     function __autoload($className){
17         //檢測文件是否存在
18         if (file_exists('./Controller/'.$className.'.php')) {
19             include './Controller/'.$className.'.php';
20         }else if(file_exists('./Libs/'.$className.'.php')){
21             include './Libs/'.$className.'.php';
22         }else{
23             echo '調用的類不存在';
24             exit;
25         }
26     }
27     $classname = $m.'Controller';
28     $obj = new $classname;
29     $obj->$a();
30 ?>

 

response方法用來返回json數據包

JSON_UNESCAPED_UNICODE:以字面編碼多位元組 Unicode 字元(預設是編碼成 \uXXXX)。自 PHP 5.4.0 起生效。   

 

<?php
public static function response($errCode,$tips){
    $response = array('code'=>$errCode,'msg'=>$tips,'data'=>[]);
    $res = json_encode($response,JSON_UNESCAPED_UNICODE);
    echo $res;
}
?>

 

Auth類用來檢測傳值是否正確,這裡用了兩個檢測參數的方法,第一個用來檢測是否超時,第二個用來檢測sign是否正確(sign可以保存在資料庫中以確保每個用戶的sign不一樣)

 

 1 <?php
 2     class Auth{
 3         public static function CheckTime(){
 4             //判斷是否有t參數
 5             if (empty($_GET['t'])) {
 6                    //調用response方法,傳入錯誤碼以及提示文字
 7                 Tool::response('err001','缺少時間參數'); 
 8                 exit;
 9             }else if(time()-$_GET['t']>=10){
10                 Tool::response('err002','請求超時'); 
11                 exit;
12             }
13         }
14         public static function CheckSign(){
15             //判斷是否有sign參數
16             if (empty($_GET['sign']) || $_GET['sign']!='RPGMSonlKKu8ROdF3KyPUdCvnTPdIDx5') {
17                    //調用response方法,傳入錯誤碼以及提示文字
18                 Tool::response('err003','Sign認證失敗'); 
19                 exit;
20             }
21         }
22     }
23 ?>

 

IndexController,用來作為數據查詢返回

 

 1 <?php  
 2     class IndexController{
 3         public function get($num=""){
 4             $link = mysqli_connect('localhost','root','password') or die("資料庫連接失敗");
 5             mysqli_select_db($link,'dbname');
 6             mysqli_set_charset($link,'utf8');
 7             if($num!=''){
 8                 $sql = "SELECT * FROM content limit=".$num;
 9             }else{
10                 $sql = "SELECT * FROM content";
11             }
12             $data=mysqli_query($link,$sql);
13             mysqli_close($link);
14             //返回值數組
15             $response = array('code'=>'000000','msg'=>'ok','data'=>$data);
16             $res = json_encode($response,JSON_UNESCAPED_UNICODE);
17             echo $res;
18         }
19     }
20 ?>

 

最後請求地址為:API介面地址?m=index&a=get&num=2&t=time&sign=sign


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 【返回導航】 在簡單瞭解了Orleans 之後我們可以通過幾個例子去加深印象 一、快速入門示例 這個例子也是跟著《Microsoft Orleans 之 入門指南》(https://www.cnblogs.com/endv/p/6147976.html)這篇文章做的 上篇筆記中的連個例子說明瞭開發的 ...
  • 1、介紹 FSLIB.NETWORK 是一款開源HTTP的高性能高易用性網路庫,是對HttpWebRequest/HttpWebResponse的包裝,目的是為了用起來更簡單明瞭。設計的時候就為了提供更高的可用性和擴展性。每天由它發現的請求數過億。 源碼:https://github.com/icc ...
  • 問題 1072: 汽水瓶 時間限制: 1Sec 記憶體限制: 128MB 題目描述 有這樣一道智力題:“某商店規定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶, 方法如下:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這 ...
  • 抽象類是由abstract修飾的類,定義方式如public abstract class A{...}。 介面由interface修飾,定義方式如public interface B{...}。 抽象類與介面的具體特性見下文。 抽象類: (1).抽象類中由abstract修飾的方法稱為抽象方法,抽象 ...
  • spring-aop-4.3.7.RELEASE 在《Spring AOP高級——源碼實現(1)動態代理技術》中介紹了兩種動態代理技術,當然在Spring AOP中代理對象的生成也是運用的這兩種技術。本文將介紹Spring AOP如何通過JDK動態代理的方式創建代理對象。 JDK動態代理以及CGLI ...
  • 91,什麼是ORM? 對象關係映射(Object-Relational Mapping,簡稱ORM)是一種為瞭解決程式的面向對象模型與資料庫的關係模型互不匹配問題的技術; 簡單的說,ORM是通過使用描述對象和資料庫之間映射的元數據(在Java中可以用XML或者是註解),將程式中的對象自動持久化到關係 ...
  • Python For嵌套迴圈 圖形列印X型 nested loop -練習題,網上For嵌套迴圈圖形列印作業很多是C++語言做的,我覺得Python應該也能做,就來試一試。 ...
  • 天龍八部 八步操作資料庫 七賤下天山 七步操作資料庫 (將判斷錯誤省略) 六脈神劍 六步操作資料庫(將判斷錯誤省略,將選擇資料庫添加到第一步) 1.連接資料庫 mysqli_connect(); 參數1:資料庫主機地址 參數2:資料庫用戶名 參數3:資料庫密碼 參數4:[可選參數] 要操作的資料庫名 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...