API平台在5分钟内启动并运行
#教程 #php #api #symfony

API Platform是建立在Symfony组件之上的API-First项目的框架。让我们看看如何在短短5分钟内创建一个最小和轻巧的入门项目!

唯一的要求是安装Dev Containers extensionDocker DesktopVisual Studio Code

设置

下载Symfony Sail(免责声明,我是作者ð),它为Symfony提供了即时开发环境。

  1. 在目录中提取拉链
  2. 在该文件夹中创建一个空的.env.local
  3. 启动Visual Studio代码,键入F1并选择 dev容器:重新打开容器

从现在开始,每个命令都必须在Visual Studio代码内置终端中运行,即容器本身内部。

让我们下载并安装 symfony骨架

curl -O https://raw.githubusercontent.com/symfony/skeleton/6.2/composer.json
composer install

我们需要添加两个必需的库才能导航API平台文档:

composer require symfony/asset symfony/twig-pack

最后 API平台包:

composer require api-platform/core

您的API文档可在http://localhost/api/docsððð

上找到

您的第一个资源

是时候添加第一个资源了!我们要验证输入数据和持续我们的资源。懒惰,我们还利用MakerBundle的优势:

不要执行Docker食谱,因为我们已经具有Docker配置!

composer require symfony/validator symfony/orm-pack symfony/maker-bundle

等一下,数据库呢?多亏了Symfony Sail,我们已经有一个运行的数据库实例为db:3306。让我们在.env.local文件中设置DATABASE_URL

DATABASE_URL="mysql://root:@db:3306/db_name?serverVersion=10.11.2-MariaDB&charset=utf8mb4"

现在我们最终可以生成我们的第一个名为BlogPost的资源:

php bin/console make:entity BlogPost --api-resource

使用向导,添加所需的title字符长度的属性,然后修改App\Entity\BlogPost如下:

<?php

namespace App\Entity;

// ...
use Symfony\Component\Validator\Constraints as Assert;

// ...
class BlogPost
{
    // ...

    // ...
    #[Assert\NotBlank]
    #[Assert\Length(max: 64)]
    private ?string $title = null;
}

几乎完成了!生成迁移并执行它:

php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate -n

完成! ð

使用http://localhost/api/docs上的API平台页面测试一个简单的帖子请求,具有简单的有效载荷,例如{ title: "My first blog post!" }

奖励:使用phpstan进行静态分析,并使用php_codesniffer保存时格式化? ðρ

简单:

安装这些库的食谱。

composer require --dev phpstan/phpstan squizlabs/php_codesniffer