下面给你一个在 Debian 下使用 Laravel 写 API 接口的完整思路和步骤,从环境到示例接口,适合新手到中等水平。
sudo apt update
sudo apt upgrade -y
sudo apt install -y php php-cli php-mbstring php-xml php-curl php-mysql php-zip unzip git
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer --version
sudo apt install -y nginx
(可选)数据库:
sudo apt install -y mysql-server
# 或
sudo apt install -y sqlite3 php-sqlite3
composer create-project laravel/laravel api-demo
cd api-demo
编辑 .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=api_demo
DB_USERNAME=root
DB_PASSWORD=密码
创建数据库:
CREATE DATABASE api_demo;
php artisan make:model Post -m
修改迁移文件:
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
执行迁移:
php artisan migrate
php artisan make:controller Api/PostController
示例控制器:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index()
{
return response()->json(Post::all());
}
public function store(Request $request)
{
$data = $request->validate([
'title' => 'required',
'content' => 'required'
]);
$post = Post::create($data);
return response()->json($post, 201);
}
public function show($id)
{
return response()->json(Post::findOrFail($id));
}
}
编辑 routes/api.php:
use App\Http\Controllers\Api\PostController;
Route::get('/posts', [PostController::class, 'index']);
Route::post('/posts', [PostController::class, 'store']);
Route::get('/posts/{id}', [PostController::class, 'show']);
php artisan serve
访问:
http://127.0.0.1:8000/api/posts
Nginx 配置示例:
server {
listen 80;
server_name api.example.com;
root /var/www/api-demo/public;
location / {
try_files $uri /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
}
php artisan make:resource PostResource
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
return response()->json([
'code' => 0,
'msg' => 'success',
'data' => $post
]);
php artisan route:list
php artisan make:controller
php artisan make:model
php artisan migrate
php artisan serve
如果你愿意,我可以:
你现在是打算 本地学习 还是 服务器部署?