thinkphp6.x+api知识点

Posted 代码当酒喝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

在这里插入图片描述

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

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

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

在这里插入图片描述

然后访问

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

在这里插入图片描述
然后根据给出的提示调试到正确为止
在这里插入图片描述

2.关于代码提示

在phpstorm中发现没有提示,这点tp6还比较坑。
在这里插入图片描述
如果没有代码提示,把 tp5.1 的注解可以暂时复制过来;

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

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

在这里插入图片描述
在这里插入图片描述

然后刷新后发现清楚了

在这里插入图片描述

资源路由

为什么第一个方法是可以的呢?因为我们没有设置强制路由,但是后面的方法就没办法了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
再次访问:
在这里插入图片描述

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

标识请求类型生成路由规则对应操作方法(默认)
indexGETuserindex
savePOSTusersave
readGETuser/:idread
updatePUTuser/:idupdate
deleteDELETEuser/:iddelete

如何验证?

php think route:list

在这里插入图片描述

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() ? '数据不存在' : '数据请求成功');

在这里插入图片描述
在这里插入图片描述
查找特定主键数据,这时肯定找不到,那么就会输出数据不存在

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

在这里插入图片描述

4.api分页处理

1.paginate()

2.page()

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

以上是关于thinkphp6.x+api知识点的主要内容,如果未能解决你的问题,请参考以下文章

基于ThinkPhp6.x+Vue+AntDesign低代码开发平台

基于ThinkPhp6.x+Vue+AntDesign低代码开发平台

ThinkPhp6.x+Vue+AntDesign低代码后台管理系统源码

ThinkPhp6.x+Vue后台管理系统

ThinkPhp6.x+Vue后台管理系统

ThinkPhp6.x+Vue前后端分离后台管理系统