ThinkPHP前后端分离小程序对接接口怎么写

絕刀狂花

絕刀狂花

2026-08-03

938人浏览

原创

thinkphp实现小程序前后端分离的核心是将其作为纯api服务:关闭模板引擎、统一json响应、通过code换取openid并生成token存redis、用中间件校验token权限、所有敏感接口强制校验token与openid一致性。

thinkphp前后端分离小程序对接接口怎么写

ThinkPHP 实现前后端分离的小程序接口,核心是把 ThinkPHP 当作纯后端 API 服务来用:不渲染页面、统一返回 JSON、做好鉴权和跨域(小程序本身不走浏览器,但开发调试或配合 H5 时可能涉及),同时适配小程序的登录态(如 code 换取 session_key + openid)。

1. 配置基础 API 环境

确保项目以 API 模式运行:

  • 关闭模板引擎:在 config/app.php 中设 'view_replace_str' => [],并确认不调用 view()fetch()
  • 统一 JSON 输出:在公共基类控制器(如 app/controller/ApiBase.php)中封装成功/失败响应方法,例如:
protected function success($data = [], $msg = 'ok', $code = 200) {
    return json(['code' => $code, 'msg' => $msg, 'data' => $data]);
}
protected function fail($msg = 'error', $code = 400) {
    return json(['code' => $code, 'msg' => $msg, 'data' => []]);
}

所有 API 控制器继承该基类,统一输出格式,便于小程序端解析。

2. 小程序登录与用户态管理

小程序不依赖 Cookie,需用自定义登录态(推荐 JWT 或服务端 Session ID + Redis 缓存):

PHP 8.5.5
PHP 8.5.5

PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。

下载
  • 前端调用 wx.login() 获取 code,POST 到接口(如 /api/login
  • 后端用 code 向微信接口 https://api.weixin.qq.com/sns/jscode2session 换取 openidsession_key
  • 生成唯一 token(如 JWT 或 md5(uniqid().openid)),存入 Redis(key: token:xxx,value: ['openid'=>'xxx', 'login_time'=>time()],过期时间建议 7 天)
  • 返回 token 给小程序,后续请求在 header(如 X-Auth-Token)或 POST body 中携带

3. 接口权限控制(中间件)

为需要登录的接口加权限校验:

  • 新建中间件 app/middleware/CheckToken.php
  • 从 header 或参数中提取 token,查 Redis 是否存在且未过期
  • 验证通过后,可将 openid 注入 Request 对象($request->withAttr('openid', $openid)),供控制器直接使用
  • 在路由或控制器顶部绑定该中间件,例如:Route::rule('user/info', 'User/info')->middleware('checkToken');

4. 小程序常见接口示例(以用户信息为例)

控制器路径:app/controller/api/User.php

namespace app\controller\api;

use app\Controller;
use think\Request;

class User extends Controller
{
    public function info(Request $request)
    {
        $openid = $request->attr('openid'); // 来自中间件注入
        $user = \think\Db::name('user')->where('openid', $openid)->find();
        if (!$user) {
            return $this->fail('用户不存在', 404);
        }
        return $this->success([
            'nickName' => $user['nickname'],
            'avatarUrl' => $user['avatar'],
            'gender'   => $user['gender']
        ]);
    }
}

对应路由定义在 route/api.php

use think\facade\Route;
Route::group('api', function () {
    Route::post('login', 'api.Login/login');
    Route::get('user/info', 'api.User/info')->middleware('checkToken');
});

不复杂但容易忽略:小程序 wx.request 默认不带 Cookie,所以别依赖 PHPSESSID;所有敏感操作(如提交订单、获取手机号)必须校验 token + openid 一致性;微信手机号解密、支付回调等需严格验签。接口写完,用 Postman 或小程序开发者工具真机调试验证字段和状态码即可。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php thinkphp

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1084

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2082

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2578

10

php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

5431

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

3587

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

1786

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

2251

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

2782

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

1999

9

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程