thinkphp6.x+api知识点

1.RestFul Api 编码风格

简单概念

1.传统的是采用混编(html+php)或模板(tpl)的方式进行设计
2.前后端分离主要通过后端提供 API 接口返回的 json 数据交给前端渲染;
这样,后端程序员就专心提供数据,而前端程序员拿数据专心做渲染即可;
3.RestFul Api 是一种设计风格,推荐的一种规范,有助于统一协同和管理

什么是RestFul Api 风格 参考地址

http://restful.p2hp.com/
http://www.ruanyifeng.com/blog/2014/05/restful_api.html

安装

项目安装

tp6要求的php版本为PHP >= 7.1.0
下载方式只能通过composer安装
基础的环境搭建,和composer的安装就不介绍了

1.通过composer安装thinkphp6.x

composer create-project topthink/think tpapi //安装
composer update topthink/framework //更新

2.修改hosts文件

C:\Windows\System32\drivers\etc 增加

127.0.0.1 api.tp6.com

3.启动测试命令

php think run -H api.tp6.com

4. 在.env中配置mysql连接信息

.env(默认没有这个只有.example.env复制一份重命名即可) 和config/database.php 中配置 mysql 的用户密码以便连接

2.资源控制器和资源路由

资源控制器

1.创建一个只用于api的接口开发的控制器

php think make:controller User --api

2.创建一个配对的User模型

php think make:model User

thinkphp6.x+api知识点

1.在控制器中使用尝试获取数据

在控制器index方法中尝试获取数据,具体代码如下

use app\model\User as UserModel;
public function index()
{
return UserModel::select();
}

thinkphp6.x+api知识点

然后访问

http://api.tp6.com:8000/user

thinkphp6.x+api知识点
然后根据给出的提示调试到正确为止
thinkphp6.x+api知识点

2.关于代码提示

在phpstorm中发现没有提示,这点tp6还比较坑。
thinkphp6.x+api知识点
如果没有代码提示,把 tp5.1 的注解可以暂时复制过来;

3. 如果在.env 中开启了调试,可看到错误提示,但出现 trace;

解决方法:关闭调试,并且在 config/app.php 中打开错误信息即可;

thinkphp6.x+api知识点
thinkphp6.x+api知识点

然后刷新后发现清楚了

thinkphp6.x+api知识点

资源路由

为什么第一个方法是可以的呢?因为我们没有设置强制路由,但是后面的方法就没办法了
thinkphp6.x+api知识点

thinkphp6.x+api知识点
thinkphp6.x+api知识点
再次访问:
thinkphp6.x+api知识点

定义那一个资源路由就相当于定义了以下几个路由

标识 请求类型 生成路由规则 对应操作方法(默认)
index GET user index
save POST user save
read GET user/:id read
update PUT user/:id update
delete DELETE user/:id delete

如何验证?

php think route:list

thinkphp6.x+api知识点

3.生成标准api

1.创建api基类

我们创建一个 Base 抽象基类,专门用于提供给子类实现 api 生成;

<?php


namespace app\controller;

abstract class Base
{
    protected function create($data, $msg = '', $code = 200, $type = 'json')
    {
        //返回 api 结果
        $result = [
            //状态码
            'code' => $code,
            //自定义消息
            'msg' => $msg,
            //数据返回
            'data' => $data
        ];
        //将数据返回成指定格式,默认 json
        return \think\Response::create($result, $type);
    }
}

2.生成api接口

通过 Base 基类的继承,我们想创建一个获取全部用户列表的 api 接口;

        //获取数据列表
        $data = \app\model\User::field('id,username,email')->select();
        //查询所有数据
        return $this->create($data, $data->isEmpty() ? '数据不存在' : '数据请求成功');

thinkphp6.x+api知识点
thinkphp6.x+api知识点
查找特定主键数据,这时肯定找不到,那么就会输出数据不存在

        //获取数据列表
        $data = \app\model\User::field('id,username,email')->select([200,201]);
        //查询所有数据
        return $this->create($data, $data->isEmpty() ? '数据不存在' : '数据请求成功');

thinkphp6.x+api知识点

4.api分页处理

1.paginate()

2.page()

直接采用 page()方法,这个方法来源于 limit()方法,可以手动控制的灵活些

上一篇:ThinkPHP6 -------出现控制器不存在app\controller\Index


下一篇:thinkphp6 twig3.x使用 说明