How to write interfaces php project

How to use PHP to develop API (Application Programming Interface, Application Programming Interface) it?

1, and WEB development, you first need some relevant parameters that will pass over by the client, perhaps maybe GET POST, mutually agreed between the need to develop good team, or develop a unified specification.

2, with parameters depending on the application requirements, the completion of data processing, such as: task progress updates in the APP purchase, a game end data submission etc.

3, after completion of the data processing logic returns to the client the required data used, for example: status of the task, the purchase result, the player information, etc.

How the data back to the client?

In the form of direct output, such as: JSON, XML, TEXT, and so on.

4, the client obtains the data you return, and interact locally on the client and user

Temporary write a simple API example:

<?php
// 设置json格式
header('content-type:application/json;charset=utf-8');
$output = array();
$a = @$_GET['a'] ? $_GET['a'] : '';
$uid = @$_GET['uid'] ? $_GET['uid'] : 0;
if (empty($a)) {
 $output = array('data'=>NULL, 'info'=>'数据错误', 'code'=>-201);
 exit(json_encode($output));
}
//走接口
if ($a == 'get_users') {
 //检查用户
 if ($uid == 0) {
 $output = array('data'=>NULL, 'info'=>'The uid is null!', 'code'=>-401);
 exit(json_encode($output));
 }
 //假设 $mysql 是数据库
 $mysql = array(
 10001 => array(
 'uid'=>10001,
 'vip'=>5,
 'nickname' => 'Shine X',
 'email'=>'[email protected]',
 'qq'=>979137,
 'gold'=>1500,
 'powerplay'=> array('2xp'=>12,'gem'=>12,'bingo'=>5,'keys'=>5,'chest'=>8),
 'gems'=> array('red'=>13,'green'=>3,'blue'=>8,'yellow'=>17),
 'ctime'=>1376523234,
 'lastLogin'=>1377123144,
 'level'=>19,
 'exp'=>16758,
 ),
 10002 => array(
 'uid'=>10002,
 'vip'=>50,
 'nickname' => 'elva',
 'email'=>'[email protected]',
 'qq'=>NULL,
 'gold'=>14320,
 'powerplay'=> array('2xp'=>1,'gem'=>120,'bingo'=>51,'keys'=>5,'chest'=>8),
 'gems'=> array('red'=>13,'green'=>3,'blue'=>8,'yellow'=>17),
 'ctime'=>1376523234,
 'lastLogin'=>1377123144,
 'level'=>112,
 'exp'=>167588,
 )
 );
  
 $uidArr = array(10001,10002);
 if (in_array($uid, $uidArr, true)) {
 $output = array('data' => NULL, 'info'=>'The user does not exist!', 'code' => -402);
 exit(json_encode($output));
 }
 //查询数据库
 $userInfo = $mysql[$uid];
  
 //输出数据
 $output = array(
 'data' => array(
 'userInfo' => $userInfo,
 'isLogin' => true,//是否首次登陆
 'unread' => 4,//未读消息数量
 'untask' => 3,//未完成任务
 ), 
 'info' => 'Here is the message which, commonly used in popup window', //消息提示,客户端常会用此作为给弹窗信息。
 'code' => 200, //成功与失败的代码,一般都是正数或者负数
 );
 exit(json_encode($output));
} elseif ($a == 'get_games_result') {
 //...
 die('您正在调 get_games_result 接口!');
} elseif ($a == 'upload_avatars') {
 //....
 die('您正在调 upload_avatars 接口!');
}

For clients, directly call this address:

http://localhost/api/test/index.php
http://localhost/api/test/index.php?a=get_users
http://localhost/api/test/index.php?a=get_users&uid=10001
http://localhost/api/test/index.php?a=get_users&uid=10002
http://localhost/api/test/index.php?a=get_users&uid=10003

The actual project, we have a few things should be noted that the development of API (for reference only):

1, single-file realize there are many forms of multiple interfaces, such as: if ... elseif ... or switch or dynamic method (that is, in the form of body functions such access TP's)

2 common format for data output is best to use json, json has a very strong cross-platform, the market's major mainstream programming languages ​​support parsing json, json is gradually replacing xml, become a network data

3, port security, we must increase the interface verification. For example, the client and server interfaces for different unified way to do encryption, verification should be carried out in the server for each interface needs. To ensure that the interface is to prevent malicious hackers or malicious calls refreshed, especially large-scale commercial applications.

4, the line must be guaranteed for all API interfaces and turn off all the normal error => error_reporting (0), while outputting the JSON, can not have any other output, otherwise, the client will fail analysis data, direct Crash!

5, API and development WEB quite different, if it is WEB, it may code for an error, and will not lead to particularly serious errors, maybe just cause data to be written and the query fails, may lead to a certain part of the WEB misplaced or garbled. But if the API, directly Crash!

发布了28 篇原创文章 · 获赞 20 · 访问量 6022

Guess you like

Origin blog.csdn.net/monkeyapi/article/details/103933657