使用php 造json数据接口

作者: silencefun | 来源:发表于2017-11-13 16:46 被阅读428次

做前端局限性略大,想要数据不能总等后台来实现,使用php比起来使用JAVA web 简便了很多。

0x00

配置好 php +mysql+apache环境的 电脑,建议chrome API调试插件(google Chrome 网上应用商店):apiDebug-API接口调试插件

因为和tomcat 占用了8080 区分 php的服务 是8000 端口,不是php coder,使用notepad++ ,参考一些 写了连接数据库 返回 数据json.

Apache的安装路径 ...Apache24\conf\httpd.conf中修改相关配置的,php 的DocumentRoot指向为 E:/WebRoot , Listen 改为8000

DocumentRoot "E:/WebRoot"
<Directory "E:/WebRoot">
......//此处省略
</Directory>

在E:/WebRoot下新建文件夹api,作为接口路径,在api下新建两个php文件connect_config.php和getdata.php,如图:


image.png

其中,connect_config.php是为了做数据库配置。使用SQLyog (或其他工具)查看本机的mysql 已有的数据库,如图,是world数据库的city表:


image.png

用phpmyadmin 一样的直观

image.png

当然也可以自己重新建库建表,道理是一样的。

在connect_config.php中代码:

 <?php
// 服务器
define('DB_HOST', '127.0.0.1');

//端口号
define('DB_PORT', '3306');

// 用户名
define('DB_USER', 'root');

// 密码
define('DB_PWD', '000000');

// 数据库名
define('DB_NAME', 'world');

?>

数据库名要选择你要连接的数据库。
getdata.php就是主要写 方法处理,包括 连接 数据库 执行查询 json格式化数据 等。

所有代码:

<?php
require_once 'connect_config.php';

// 返回数据 的状态 消息 和数据
$status = false; 
$msg = '';
$data = array();

//查询语句 
$query = "select * from city  limit 5";  
//数据库连接
$conn = mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME,DB_PORT) or die('数据库连接失败');
$data1 = mysqli_query($conn, $query);

if ($data1){
    $status = true;
    $msg = '成功';
    $i = 0;
    while($row = mysqli_fetch_array($data1)){
    
        $data [$i]['ID'] = $row['ID'];
        $data [$i]['Name'] = $row['Name'];
        $data [$i]['CountryCode'] = $row['CountryCode'];
        $data [$i]['District'] = $row['District'];
        $data [$i]['Population'] = $row['Population'];
        $i++;
    }

}else{
    $status = false;
    $msg = '数据查询失败';
    $valuse = array(
        $status,
        $msg
    );

}
 echo json($status,$msg,$data); 
//封装json 格式
function json($status, $message = '', $data = array()) {
        if (! is_bool ( $status )) {
            return '';
        }
    $result = array (
            'status' => $status,
            'message' => $message,
            'data' => $data 
        );
        echo json_encode ( $result,JSON_UNESCAPED_UNICODE);
    }
?>  

很简单,注释也写得很清楚,当然这是都不考虑其他的写法,查询world数据库表中的前5条数据,先看一下执行结果,直接在浏览器中输入 localhost:8000/api/getdata.php

image.png

这样看似乎不太直观,放入apidebug插件中:


image.png

初步任务完成了,这只是取到数据了但是缺少交互,

0x01.添加get请求参数

在getdata 中修改添加:

$datanum=$_GET['datanum'];    

//查询语句 
$query = "select * from city  limit $datanum";

注意:只是做测试 没有做任何的数据校验!

测试:
直接写到url, 即把?datanum=5参数加到URL最后,多个参数用&连接。

image.png

或者使用工具

image.png

先选请求方式-get,在params 左侧key中添加 参数名右侧value中添加参数值。

0x02.添加post请求参数

修改一点点即可。

  $datanum=$_POST['datanum'];    

不添加任何参数请求试试?

image.png

失败了,没有查出任何数据,使用post添加参数:先选定post方式 添加参数(注意名字一致)。


image.png

0x03.分页查询

分页查询,实现分页加载怎么办?
要从sql 语法来下手

limit函数 limit关键字的用法:
LIMIT [offset,] rows
取前5条数据
select * from table_name limit 0,5
或者
select * from table_name limit 5
查询第11到第15条数据
select * from table_name limit 10,5

offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。

需要两个参数,一页的数量(偏移量),页码(计算起始值)。

可以这样写

  $datanum=$_POST['datanum'];    
  $pagenum=$_POST['pagenum']; 
  $startnum=intval($datanum)*intval($pagenum);//计算起始值
  //查询语句 
  $query = "select * from city  limit  $startnum,$datanum";

测试 一页7个页数是2 ,刚好结果是从第十五个。
这应该是第三页,不过目的达到了。。

image.png

注意:所有数据都没有校验!!

这样子 就可以用自己造数据来访问了,使用同一局域网内手机浏览器测试下,win+X 输入 ipconfig 得到 ip地址:


image.png

如图 本机ip192.168.4.146,
在手机上访问,做测试,改成直接获取:
浏览器输入192.168.4.146:8000/api/getdata.php

image.png

注意:1.如果局域网 其他设备不能访问 很大程度上是因为 计算机开启了防火墙,关闭了就好。
2.访问出错,请检查 拼写中是否有空格,逗号分号引号是否用了中文符号。

然后可以愉快的自己 造数据调接口啦,至于增删改大同小异。

相关文章

网友评论

    本文标题:使用php 造json数据接口

    本文链接:https://www.haomeiwen.com/subject/rcrzmxtx.html