252、后端api开发工具准备
1. 工具准备
api调试管理工具 postman
IDE编辑器 VScode
本地运行环境工具 UPUPWANK(win)
2. 打开UPUPW之后N模式,一键开启
- 功能扩展——phpMyAdmin管理,进入数据库可视化工具 密码从数据库管理获取——修改密码为root
- 功能扩展——Redis管理,进入redis可视化工具
253、安装thinkphp6和配置(一)
1. 配置php环境变量
打开upupw的安装路径——Modules——PHPX——PHP73——复制路径 此电脑右击——属性——高级系统设置——环境变量——系统变量——Path——编辑——新建——粘贴 验证:打开命令行工具——出现版本说明完成配置
2. 安装composer
可以参照菜鸟教程:Composer 安装与使用 | 菜鸟教程 (runoob.com)
- 安装地址是配置环境变量的路径下面
- 安装完成打开命令行检验一下:composer --version
- 然后配置镜像——打开下面链接
命令行:composer config -g repo.packagist composer
- 打开upupw(创建站点)——首页(+)——添加虚拟机:
网址名称:shop.test;
主要域名:shop.test;
PHP:7.3.X
- 功能扩展——Hosts重定向——域名提交保存
- 首页——编辑——目录——cmd
- 安装稳定版本:composer create-project topthink/think tp
- cd tp然后运行:composer update topthink/framework
254、安装thinkphp6和配置(二)
1. 查看虚拟域名
-
浏览器地址栏输入shop.test,此时是有问题的
-
找到D:\UPUPW_ANK_W64\WebRoot\Vhosts\shop.test\tp\public复制
-
打开upupw——首页——编辑——点击编辑
网址路径:粘贴——提交修改
-
去浏览器刷新出现 “:)” 表示成功了
2. 打开编辑器vscode
- 打开文件夹:D:\UPUPW_ANK_W64\WebRoot\Vhosts\shop.test\tp
- 打开之后——找到.example.env重命名为.env
- 修改app\controller->index.php
<?php
namespace app\controller;
use app\BaseController;
class Index extends BaseController{
public function index(){
return '蒂莎IT学院';
}
public function hello($name = 'ThinkPHP6') {
return 'hello,' . $name;
}
}
router->app.php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
use think\facade\Route;
Route::get('think', function () {
return 'hello,ThinkPHP6!';
});
Route::get('hello/:name', 'index/hello');
-
对照上面两段代码的name有关联
在浏览器输入shop.test/hello/123访问不到 输入shop.test/index.php/hello/123就能访问到
3. 隐藏入口文件
- 打开upupw——(虚拟主机)伪静态配置——复制以下代码——提交修改
[apache]
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
- 在浏览器输入shop.test/hello/123就能访问到了(隐藏了index.php)
- 访问think:shop.test/think
255、api输出格式和自定义方法
app/common.php
<?php
// 应用公共文件
// 成功返回
function showSuccess($data = '',$msg = 'ok',$code = 200){
return json([
'msg'=>$msg,
'data'=>$data
],$code);
}
// 失败返回
function showError($msg = 'fail',$code = 400){
return json([
'msg'=>$msg
],$code);
}
controller/index.php
<?php
namespace app\controller;
use app\BaseController;
class Index extends BaseController {
public function index() {
// 数据 code header 可选参数
// $list=[1,2,3,4,5];
// return showSuccess($list);
return showError('记录不在');
}
public function hello($name = 'ThinkPHP6') {
return 'hello,' . $name;
}
}
256、全局异常处理
app/ExceptionHandle.php
public function render($request, Throwable $e): Response {
// 参数验证
if ($e instanceof ValidateException) {
return json($e->getError(), 422);
}
// 调试模式
if (env('APP_DEBUG')) {
// 其他错误交给系统处理
return parent::render($request, $e);
}
$headers = $e->getHeaders();
return json([
'msg'=>$e->getMessage(),
'errorCode'=>$e->getStatusCode()
],array_key_exists('statusCode',$headers) ? $headers['statusCode'] : 404);
}
.env
APP_DEBUG = false
app/common.php
// 抛出异常
function ApiException($msg = '请求错误',$errorCode = 20000,$statusCode = 404) {
abort($errorCode, $msg,[
'statusCode' => $statusCode
]);
}
// 成功返回
function showSuccess($data = '',$msg = 'ok',$code = 200){
return json([ 'msg' => $msg, 'data' => $data ],$code);
}
// 失败返回
function showError($msg = 'error',$code = 400){
return json([ 'msg' => $msg ],$code);
}
...
257、数据库创建和配置
-
打开upupw——功能扩展——phpMyAdmin管理
-
点击New——新建数据库——创建
数据库名:shoptest 排序规则:utf8_general_ci
-
创建数据表——导入——选择文件(下载好的数据库数据文件)——执行
-
打开项目——.env——配置数据库
.env文件
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = shoptest
USERNAME = root
PASSWORD = root
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true
[LANG]
default_lang = zh-cn
258、创建管理员功能(一)
- 打开终端vscode:ctrl+`:查看命令行php think
- 创建模型:php think make:model Manager——自定生成app->model->Manager.php(manager表对应的模型文件:可对表进行增删改查) 获取前端传过来的参数
- 新建一个控制器:php think make:controller admin/Manager(为了方便管理建一个admin目录)
- 新建路由:route->admin.php(管理后台模块所有路由)——复制粘贴app.php 后端相应参数
<?php
use think\facade\Route; // 分组创建
Route::group('admin',function(){
// 创建管理员
Route::post('manager','admin.Manager/save');
});
- 在postman中新建一个文件目录——新建一个请求
{
"msg": "ok",
"data": "save"
}
259、创建管理员功能(二)
打开postman、编辑器、数据库,三个相结合使用
controller/admin/Manager.php
/**
* 创建管理员 *
* @param \think\Request $request
* @return \think\Response
*/
public function save(Request $request) {
// 新建模型
$M = new \app\model\Manager();
// $param = $request->param(); /
/ 数据过滤
$param = $request->only(['username','password','avatar','role_id','status']);
// 将请求参数传入(写入)save方法
$res = $M->save($param);
return showSuccess('save');
}
model/Manager.php
class Manager extends Model {
// 修改器
public function setPasswordAttr($value,$data){
// 将密码加密 return
password_hash($value,PASSWORD_DEFAULT);
}
}
打开postman——Body——x-www-form-urlencoded
username:admin
password:admin
avatar
role_id:2
status:1
super:1
本文为网易云课堂Vue.js进阶技巧实战开发 第252课时-259课时“后端api开发”学习笔记