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 中打开错误信息即可;
然后刷新后发现清楚了
资源路由
为什么第一个方法是可以的呢?因为我们没有设置强制路由,但是后面的方法就没办法了
再次访问:
定义那一个资源路由就相当于定义了以下几个路由
标识 | 请求类型 | 生成路由规则 | 对应操作方法(默认) |
---|---|---|---|
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
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低代码开发平台