Home > Article > Backend Development > A brief discussion on using PHP for mobile APP development (API interface development), appapi_PHP tutorial
1. Answer two questions briefly:
1. Can PHP develop clients?
Answer: Yes, because PHP is a scripting language and is responsible for completing the S part of the B/S architecture or C/S architecture, that is, it is mainly used for server-side development. However, PHP can not only be developed on Internet sites. A PHP for Android (PFA) site stated that they will be able to publish programming models and toolbox documents to enable PHP applications on Android. The main sponsor of the project is open source company IronTec. PFA uses Scripting Layer for Android (SL4A), also known as Androd Scripting Environment (ASE), to achieve this. You can check out their website to learn more about the technology.
If you are interested, you can refer to some related technical documents, such as: http://so.jb51.net/cse/search?q=php+for+android&s=10520733385329581432
2. Why choose PHP as your first choice for server development?
Answer: Cross-platform (can run under UNIX, LINUX, WINDOWS, and Mac OS), low consumption (PHP consumes very few system resources), high operating efficiency (relatively speaking), and the perfect partner of MySQL. It is Free and open source,......
2. How to use PHP to develop API (Application Programming Interface, Application Programming Interface)?
Those who have done API should understand that actually developing API is simpler than developing WEB, but the logic may be more complicated, because API is actually data output without rendering the page, so there is no MVC (API only has M and C) ,
1. Just like WEB development, you first need some relevant parameters. These parameters will be passed from the client, maybe GET or POST. This needs to be agreed between the development team or a unified specification.
2. With parameters, complete data processing according to application requirements, such as: task progress update, APP in-app purchase, game end data submission, etc.
3. After the data logic is processed, the relevant data needed by the client is returned, such as: task status, in-app purchase results, player information, etc.
How to return data to the client?
Direct output form, such as: JSON, XML, TEXT, etc.
4. After the client obtains the data you returned, it interacts with the user locally on the client
A simple API example written temporarily:
<?php $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'=>'979137@qq.com', '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'=>'elva@ezhi.net', '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, ), 10003 => array( 'uid' => 10003, 'vip' => 5, 'nickname' => 'Lily', 'email' => 'Lily@ezhi.net', 'qq' => NULL, 'gold' => 1541, 'powerplay'=> array('2xp'=>2,'gem'=>112,'bingo'=>4,'keys'=>7,'chest'=>8), 'gems' => array('red'=>13,'green'=>3,'blue'=>9,'yellow'=>7), 'ctime' => 1376523234, 'lastLogin'=> 1377123144, 'level' => 10, 'exp' => 1758, ), ); $uidArr = array(10001,10002,10003); 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 接口!'); }
Click test (for the client, this address is also called directly):
http://www.ezhi.net/api/test/index.php
http://www.ezhi.net/api/test/index.php?a=get_users
http://www.ezhi.net/api/test/index.php?a=get_users&uid=10001
http://www.ezhi.net/api/test/index.php?a=get_users&uid=10002
http://www.ezhi.net/api/test/index.php?a=get_users&uid=10003
3. In actual projects, we should pay attention to several things when developing APIs (for reference only):
1. There are many ways to implement multiple interfaces in a single file, such as: if..elseif.. or switch or dynamic method (that is, TP’s form of accessing the function body)
2. It is best to use json for data output. JSON has a very strong cross-platform nature. All major mainstream programming languages in the market support json parsing. JSON is gradually replacing xml and becoming the universal format for network data
3. For interface security, interface verification must be added. For example, the client and server use unified encryption methods for different interfaces, and the server needs to verify each interface. This is to ensure that the interface is prevented from being maliciously refreshed or maliciously called by hackers, especially for large commercial applications.
4. For online APIs, it is necessary to ensure that all interfaces are normal and all error messages are turned off => error_reporting(0). When outputting JSON, there cannot be any other output. Otherwise, the client will obtain incorrect data. Information, 98% directly leads to client crash!
5. There is a certain difference between developing API and WEB. If it is WEB, the code may be wrong, which will not cause a particularly serious error. It may just cause data writing and query failure, or it may cause a certain part of the WEB to be misaligned. Or gibberish. But if it is an API, 99% of the cases are caused by the client directly crashing and crashing!
6. When doing interface development, it is not recommended to use framework development. The reasons can be summarized as follows (in fact, I am a bit risky, I am also a TPer, after all, this is the official website of TP):
Clients generally have extremely high requirements for the response speed of the server. Therefore, it is most efficient to use the most original PHP to complete interface development. If a framework is used, various unnecessary files need to be loaded. It's like wearing winter clothes in summer. Just imagine, when you are playing on your mobile phone, you use an application to perform any operation, and wait for a long time before there is any movement. Can you bear it?
As mentioned in point 4 above, frameworks are a very happy thing for WEB development, but for APIs, you really can’t imagine what problems it will cause you! In the end, you will be miserable~~ Because many frameworks were born for the WEB (I also look forward to one day seeing frameworks or extensions specifically designed for developing APIs)
Speaking of which, I have to mention that it is an open platform that is popular on the Internet. In fact, those open platforms, so-called open, provide you with such an interface. You can adjust the interface files they provide (generally returning JSON or XML) based on the technical documents they provide and the formats and requirements they set. You can get their relevant information, such as: QQ user basic information, Taobao stores, product news, etc. Then complete the interaction in your application based on these messages.
In fact, ajax is also a form of calling API, what do you think? Haha~~
Developing apps has nothing to do with architecture. Choosing an architecture depends on functional requirements. Thinkphp has relatively complex functions. Of course, it also provides many modules. If you are developing a light app, try ci. One is easy to use and small in size. , the function is also very complete!
1. SOAP
2. XML-RPC