温馨提示×

ubuntu thinkphp怎样写接口

小樊
49
2026-10-13 10:30:56
栏目: 编程语言

下面以 Ubuntu + PHP + ThinkPHP(以 ThinkPHP 6 为例) 来说明如何写接口(API),从环境到示例代码一步一步来。


一、Ubuntu 环境准备

1. 安装 PHP 和必要扩展

sudo apt update
sudo apt install php php-cli php-fpm php-mysql php-json php-mbstring php-xml php-curl -y

查看版本:

php -v

2. 安装 Composer

sudo apt install composer -y

3. 安装 ThinkPHP

composer create-project topthink/think tp-api
cd tp-api

启动测试:

php think run

默认访问:

http://localhost:8000

二、ThinkPHP 写接口的基本结构

ThinkPHP 接口一般写在 controller 里,返回 json。

目录结构:

app/
 └── controller/
     └── User.php

三、写一个最简单的接口

1. 创建控制器

php think make:controller User

编辑 app/controller/User.php:

<?php
namespace app\controller;

use think\facade\Request;
use think\Response;

class User
{
    // 获取用户列表
    public function index()
    {
        $data = [
            ['id' => 1, 'name' => '张三'],
            ['id' => 2, 'name' => '李四']
        ];

        return json([
            'code' => 200,
            'msg'  => 'success',
            'data' => $data
        ]);
    }

    // 获取单个用户
    public function read($id)
    {
        return json([
            'code' => 200,
            'msg'  => 'success',
            'data' => ['id' => $id, 'name' => '用户' . $id]
        ]);
    }
}

四、配置路由(推荐 API 模式)

编辑 route/app.php:

use think\facade\Route;

Route::get('user', 'User/index');
Route::get('user/:id', 'User/read');

访问:

http://localhost:8000/user
http://localhost:8000/user/1

五、接收 POST 参数(常见接口)

public function save()
{
    $name = Request::post('name');
    
    return json([
        'code' => 200,
        'msg'  => '创建成功',
        'data' => ['name' => $name]
    ]);
}

路由:

Route::post('user', 'User/save');

测试:

curl -X POST http://localhost:8000/user -d "name=王五"

六、数据库接口示例(MySQL)

1. 配置数据库

编辑 .env:

DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_NAME=test
DB_USER=root
DB_PASS=123456
DB_PORT=3306

2. 查询数据库

use app\model\User as UserModel;

public function list()
{
    $list = UserModel::select();
    return json($list);
}

七、统一 API 返回格式(推荐)

function api($data = [], $msg = 'success', $code = 200)
{
    return json([
        'code' => $code,
        'msg'  => $msg,
        'data' => $data
    ]);
}

八、常见问题

1. 返回 HTML 而不是 JSON?

✅ 使用 return json(...)
✅ 不要 echo

2. 跨域问题(前端调接口)

在 app/middleware.php 启用:

think\middleware\AllowCrossDomain::class

九、总结

ThinkPHP 写接口核心三步:

  1. 写 Controller(return json)
  2. 配置 Route
  3. 用 Postman / curl 测试

如果你需要:

  • ✅ ThinkPHP 8
  • ✅ 登录 / Token 接口
  • ✅ RESTful API
  • ✅ Nginx + Ubuntu 部署

告诉我,我可以继续帮你写。

0 踩