php写接口入门

了解JSON

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 JSON 具有自我描述性,更易理解

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更、更,更易解析

格式转化

学习了php的基本语法的你们肯定知道数组Array这个基本数据啦,因为我们前端显示出的数据库数据一般由数组表示的,那么基本数据数组和JSON之间要怎么转换呢?

jsonencode():将基本数据数组转换为json格式 jsondeconde():将json格式转化为基本数据数组格式

ps:从后台返回数据(echo $json)到前台,获得数据时候,一般同学都是选择用eval()函数来进行格式转化,考虑到对项目安全性问题,小编个人建议大家少用,而选择用getJSON()函数。它具有相同的功能,而且安全性要强一些。

常见的json格式:

json四原则:

“:”:数据在名称/值对中 “,”:数据由逗号分隔 “{ }”:花括号保存对象 “[ ]”:方括号保存数组

写php接口

个人写接口的时间不长,从网上资料及视频教程中得出经验:写简单接口,就相当写MVC中的MC,只写逻辑代码层,把功能用函数封装起来,到时候include,直接调用就好了。

php接口知识

(如若手机显示不全,可右滑)
interface Animal{
    public function bite();
}

class Man implements People{
    public function say(){
        echo 'i can say';
    }    

    public function dance(){
        echo 'i can dance';
    }
}

class Woman implements People{
    public function say(){
        echo 'i can say girl voice';
    }    

    public function dance(){
        echo 'i can dance like a goose';
    }
}


class Bird implements Animal{
    public function bite(){
        echo 'i can bite';
    }
}

class Hybreed implements People,Animal{
    public function say(){
        echo 'i can say';
    }

    public function dance(){
        echo 'i can dance';
    }

    public function bite(){
        echo 'i can bite';
    }
}

$hybreed = new Hybreed;
echo $hybreed->say()."\r\n";
echo $hybreed->dance()."\r\n";
echo $hybreed->bite()."\r\n";

接口存在的意义就是实现“多重继承”,准确的来说应该就做“多重实现“,因为一个php类只能有一个父类,而一个类却可以实现多个接口,就像大一学C++时,上面代码interface.php中的Hybreed类,即实现了people接口,又实现了Animal接口,而通过这种多重继承,最终的$hybreed即获得了人类的say和dance的方法,又获得了动物的bite方法。而Man类和Woman类分别实现People的接口,采用不同的内容去重写了say和dance方法,正是一种多态的体现。

登录注册api接口实例

(如若手机显示不全,可右滑)
//数据库连接部分--开始
$mysql_server_name="localhost"; //数据库服务器名称
$mysql_username="root"; // 连接数据库用户名
$mysql_password=""; // 连接数据库密码
$mysql_database="hello"; // 数据库的名字

 // 连接到数据库
$conn=mysql_connect($mysql_server_name, $mysql_username,$mysql_password);
if(!$conn) {
    echo "数据库连接失败!".mysql_error;
}
mysql_select_db($mysql_database, $conn);
//数据库部分--结束

/* 登录、注册、修改个人信息、显示用户接口‘菜单’代码--开始*/

//获取url参数
$action = isset($_POST['action']) ? $_POST['action'] : '';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$psd = isset($_POST['psd']) ? $_POST['psd'] : '';

if($action=='login') {
    login($name, $psd, true);
} else if($action=='register') {
    register($name, $psd);
} else if($action=='modifyPsd') {
    modifyPsd($name, $psd);
} else if($action=='showAll') {
    showAll();
} else {
    $result = array("result"=>"error_request");//返回一个错误提示
    $json = json_encode($result);
    echo $json;

close_conn();
/*‘菜单’代码--结束*/

/*用户登录*/
function login($name, $psd, $normal) {
    global $conn;
    if($conn) {
        $result = mysql_query("select name,psd from student");
        $success = false;
        while($row = mysql_fetch_array($result)) {
            if($name == $row['name'] && $psd == $row['psd']) {
                $success = true;
            }
        }
        if($normal) {
            $login_result = array('login_result'=>$success);
            $json = json_encode($login_result);
            echo $json;
        }
    }
    return $success;
}

/*用户注册*/
function register($name, $psd) {
    $tel = $_POST['tel'];     
    global $conn;

    if($conn) {
        //数据库查询
        $result = mysql_query("select name from student");
        $exist = false;
        while($row = mysql_fetch_array($result)) {
            if($name == $row['name']) {
                //注册失败,用户名已存在;
                $exist = true;
                $register_result = array("register_result"=>false,"error_code"=>0);
                $json = json_encode($register_result);
                echo $json;
            }
        }
        //插入数据库         
        if(!$exist) {
            $id = mysql_num_rows($result) + 1;
            $success = mysql_query("insert into student values('$id', '$name', '$tel', '$psd')");
            if($success) {
                //注册成功
                $register_result = array("register_result"=>$success);
                $json = json_encode($register_result);
                echo $json;
            } else {
                //注册失败,数据库插入错误
                $register_result = array("register_result"=>$success,"error_code"=>1);
                $json = json_encode($register_result);
                echo $json;
            }
        }           
    }
}

/*修改登录密码*/
function modifyPsd($name, $psd) {
    $newpsd = $_POST['newpsd'];
    global $conn;

    if($conn) {
        //用户登录
        $login_result = login($name, $psd, false);
        //修改密码
        if($login_result) {
            $success = mysql_query("update student set psd='$newpsd' where name='$name'");
            if($success) {
                //修改成功
                $modify_result = array("modify_result"=>$success);
                $json = json_encode($modify_result);
                echo $json;
            } else {
                //修改失败,数据库错误
                $modify_result = array("modify_result"=>$success,"error_code"=>1);
                $json = json_encode($modify_result);
                echo $json;
            }
        } else {
                //修改失败,登录失败
                $modify_result = array("modify_result"=>false,"error_code"=>2);
                $json = json_encode($modify_result);
                echo $json;
        }
    }
}

//显示所有用户
function showAll() {
    global $conn;
    if($conn) {
        $result = mysql_query("select * from student");
        $success = false;
        $array_data = array();

        $total = mysql_num_rows($result);
        //$data = array("total"=>$total,"datas"=>array(array("data"=>"123","name"=>"zhugeheng"),
        //                                                                                   array("data"=>"456","name"=>"zhaodanni")
        //                                                                      ));                                         
        while($row = mysql_fetch_array($result)) {
            $array_temp = array("name"=>$row['name'], "tel"=>$row['tel']);
            array_push($array_data, $array_temp);
        }
        $data = array("total"=>$total,"datas"=>$array_data, "result"=>true);         
        $json = json_encode($data);
        echo $json;

    }
}

//关闭连接
function close_conn() {
    global $conn;
    mysql_close($conn);
}
  尊重原创,转载请注明出处:[http://blog.csdn.net/zhugehengheng/article/details/44645287](http://blog.csdn.net/zhugehengheng/article/details/44645287)

在这里,小编在原作者的基础上对代码进行了部分注释,希望对大家的学习有所帮助,也希望有写接口经验的大牛们加我微信(wzc88czw)交流学习心得。

原文发布于微信公众号 - 程序员的碎碎念(gh_53e607dd4782)

原文发表时间:2018-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

1 条评论
登录 后参与评论

相关文章

来自专栏沃趣科技

ASM 翻译系列第七弹:高级知识 How many partners?

原作者:Bane Radulovic 译者: 庄培培 审核: 魏兴华 DBGeeK社群联合出品 ASM的数据冗余机制是通过将extent的镜像副本复...

3419
来自专栏Thinks

Service Worker最佳实践

Service Worker是一项比较新的Web技术,是Chromium团队在吸收了ChromePackaged App的Event Page机制,同时吸取了H...

2411
来自专栏PHP技术

CI一些优秀实践

最近准备接手改进一个别人用Codeigniter写的项目,虽然之前也有用过CI,但是是完全按着自己的意思写的,没按CI的一些套路。用在公众的项目,最好还是按框架...

3165
来自专栏纯洁的微笑

springboot(十九):使用Spring Boot Actuator监控应用

微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了...

2987
来自专栏GopherCoder

『Swagger 上手』

1667
来自专栏java学习

Java每日一练(2017/6/13)

Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 课前导读 ●回复"每日一练"获取以前的题目! ●答案公布时间:为每期发布题目的第二...

2738
来自专栏烂笔头

Django中六个常用的自定义装饰器

1014
来自专栏喵了个咪的博客空间

phalapi-进阶篇3(自动加载和拦截器)

#phalapi-进阶篇3(自动加载和拦截器)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. ...

2463
来自专栏魏琼东

一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-在UI中应用DataUIMapper组件

系列回顾       WinForm篇我用了一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)和一步一...

1719
来自专栏张善友的专栏

ASP.NET MVC 4中的单页面应用程序

ASP.NET MVC 4 beta中包含了一个实验项目,用作开发“单页面应用程序(single page applications)”。该项目也称为ASP.N...

1807

扫描关注云+社区