第一次写api程序,用的原生php,没有restful要求。如果只实现功能返回json数据的话感觉很容易就能实现大部分功能,那么除了功能实现之外需要注意什么问题呢?新手求指导。。已经贴上代码 一共4个文件
<code><?php class Response { /** *按json方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @param array $data 数据 */ public static function show($code,$message = '', $data = array()){ if(!is_numeric($code)){ return ''; } $result = array( 'code' => $code, 'message' => $message, 'data' => $data ); echo json_encode($result); } }</code>
<code><?php /* * 单例模式 数据库连接 */ require_once ('Response.php'); class Db { static private $_instance; static private $_connectSource; private $_DbConfig = array( 'host' => 'localhost', 'user' => 'root', 'password' => 'xxx', 'database' => 'sportsstore' ); private function __construct() { } static public function getInstace(){ if(!(self::$_instance instanceof self)){ self::$_instance = new self(); } return self::$_instance; } public function connect(){ if(!self::$_connectSource) { self::$_connectSource = mysqli_connect($this->_DbConfig['host'], $this->_DbConfig['user'], $this->_DbConfig['password'],$this->_DbConfig['database']); if(!self::$_connectSource){ throw new Exception("mysql connect error" . mysql_errno()); } } return self::$_connectSource; } } </code>
这个是登录的代码
<code>/* *login.phh 登录接口 */ <?php require_once ('Db.php'); require_once ('Response.php'); try{ $link = Db::getInstace()->connect(); } catch (Exception $ex) { return Response::show(402,"数据库连接失败"); } $account = mysqli_real_escape_string($link, trim($_POST['account'])); $password = mysqli_real_escape_string($link, trim($_POST['password'])); $query = "select * from users where account = \"$account\""; $result = mysqli_query($link, $query); if(mysqli_num_rows($result)==1){ $row = mysqli_fetch_array($result); if($row['password'] == $password){ return Response::show(200, '登录成功'); }else{ return Response::show(202,'密码不正确'); } }else{ return Response::show(201,'账户不存在'); }</code>
<code>/* *getPersonalInfo.phh 查询个人信息接口 */ <?php require_once ('Db.php'); require_once ('Response.php'); try{ $link = Db::getInstace()->connect(); } catch (Exception $ex) { return Response::show(402,'数据库连接失败'); } $account = isset($_GET['account']) ? mysqli_real_escape_string($link, trim($_GET['account'])) : null; if($account === null){ return Response::show(401,'未登录'); } $query = "select * from users where account=\"$account\""; $result = mysqli_query($link, $query); $row = mysqli_fetch_assoc($result); return Response::show(200,"操作成功",$row);</code>
回复内容:
第一次写api程序,用的原生php,没有restful要求。如果只实现功能返回json数据的话感觉很容易就能实现大部分功能,那么除了功能实现之外需要注意什么问题呢?新手求指导。。已经贴上代码 一共4个文件
<code><?php class Response { /** *按json方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @param array $data 数据 */ public static function show($code,$message = '', $data = array()){ if(!is_numeric($code)){ return ''; } $result = array( 'code' => $code, 'message' => $message, 'data' => $data ); echo json_encode($result); } }</code>
<code><?php /* * 单例模式 数据库连接 */ require_once ('Response.php'); class Db { static private $_instance; static private $_connectSource; private $_DbConfig = array( 'host' => 'localhost', 'user' => 'root', 'password' => 'xxx', 'database' => 'sportsstore' ); private function __construct() { } static public function getInstace(){ if(!(self::$_instance instanceof self)){ self::$_instance = new self(); } return self::$_instance; } public function connect(){ if(!self::$_connectSource) { self::$_connectSource = mysqli_connect($this->_DbConfig['host'], $this->_DbConfig['user'], $this->_DbConfig['password'],$this->_DbConfig['database']); if(!self::$_connectSource){ throw new Exception("mysql connect error" . mysql_errno()); } } return self::$_connectSource; } } </code>
这个是登录的代码
<code>/* *login.phh 登录接口 */ <?php require_once ('Db.php'); require_once ('Response.php'); try{ $link = Db::getInstace()->connect(); } catch (Exception $ex) { return Response::show(402,"数据库连接失败"); } $account = mysqli_real_escape_string($link, trim($_POST['account'])); $password = mysqli_real_escape_string($link, trim($_POST['password'])); $query = "select * from users where account = \"$account\""; $result = mysqli_query($link, $query); if(mysqli_num_rows($result)==1){ $row = mysqli_fetch_array($result); if($row['password'] == $password){ return Response::show(200, '登录成功'); }else{ return Response::show(202,'密码不正确'); } }else{ return Response::show(201,'账户不存在'); }</code>
<code>/* *getPersonalInfo.phh 查询个人信息接口 */ <?php require_once ('Db.php'); require_once ('Response.php'); try{ $link = Db::getInstace()->connect(); } catch (Exception $ex) { return Response::show(402,'数据库连接失败'); } $account = isset($_GET['account']) ? mysqli_real_escape_string($link, trim($_GET['account'])) : null; if($account === null){ return Response::show(401,'未登录'); } $query = "select * from users where account=\"$account\""; $result = mysqli_query($link, $query); $row = mysqli_fetch_assoc($result); return Response::show(200,"操作成功",$row);</code>
Update
数据完整
语义简洁
版本可控
响应灵活
安全可靠(https可以考虑,token机制,ip白名单等)
响应速度
风格统一(不要隔三差五就变,返回的格式统一)
记住一点,不要写json_ecode($array);exit;这样的代码就好。
用自己轻量级的类似apiRespnse($data) 分装,虽然你只返回json.
楼上说的不错,我再加一条。
格式统一
比如返回的数据一定带一个统一名称的“请求状态结果”,比如返回的数据一定统一放一个变量里。
避免出现前台不同的地方要判断不同的名字。
注册的接口 还有抽奖的接口 必须安全性得到保障,防止恶意刷!!!
你先贴上你的代码。我也学习一下。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。