romainjudic / symfony-api-skeleton
为API开发而优化的最小化安装的Symfony应用的骨架。
Requires
- php: ^7.2.5
- ext-ctype: *
- ext-iconv: *
- composer/package-versions-deprecated: ^1.10
- doctrine/annotations: ^1.0
- doctrine/doctrine-bundle: ^2.1
- doctrine/doctrine-migrations-bundle: ^3.0
- doctrine/orm: ^2.7
- lexik/jwt-authentication-bundle: ^2.8
- nelmio/api-doc-bundle: ^4.0
- nelmio/cors-bundle: ^2.1
- phpdocumentor/reflection-docblock: ^5.2
- sensio/framework-extra-bundle: ^5.5
- symfony/apache-pack: ^1.0
- symfony/asset: 5.3.*
- symfony/console: 5.3.*
- symfony/dotenv: 5.3.*
- symfony/flex: ^1.3.1
- symfony/form: 5.3.*
- symfony/framework-bundle: 5.3.*
- symfony/property-access: 5.3.*
- symfony/property-info: 5.3.*
- symfony/runtime: 5.3.*
- symfony/security-bundle: 5.3.*
- symfony/serializer: 5.3.*
- symfony/twig-bundle: 5.3.*
- symfony/validator: 5.3.*
- symfony/yaml: 5.3.*
- twig/extra-bundle: ^2.12|^3.0
- twig/twig: ^2.12|^3.0
Requires (Dev)
- doctrine/doctrine-fixtures-bundle: ^3.3
- fzaninotto/faker: ^1.9
- overtrue/phplint: ^2.0
- squizlabs/php_codesniffer: ^3.5
- symfony/debug-bundle: ^5.3
- symfony/maker-bundle: ^1.20
- symfony/monolog-bundle: ^3.0
- symfony/stopwatch: ^5.3
- symfony/twig-bundle: ^5.3
- symfony/var-dumper: ^5.3
- symfony/web-profiler-bundle: ^5.3
Conflicts
This package is auto-updated.
Last update: 2024-09-18 16:26:51 UTC
README
该项目是构建干净Symfony Web API的骨架。它包含了您将需要的多数包和配置,并帮助您减少Symfony项目的繁琐搭建时间。
目录
已安装内容
要求
请确保您已安装以下内容
- PHP 7.4+版本(根据您的操作系统,说明可能会有所不同)
- Composer (https://getcomposer.org.cn/download/)
- Symfony CLI (https://symfony.com.cn/download)
- 一个用于您新应用的数据库用户/密码。
然后运行以下命令以检查您的系统是否准备好运行Symfony应用
symfony check:requirements
如果一切正常,您可以继续。否则,在继续之前,请修复需要修复的问题。
安装
创建您的项目
该项目旨在帮助您开始自己的Symfony应用。
您可以使用Composer的create-project
命令创建应用:它将使用本项目已完成的配置来创建一个新的项目。
composer create-project romainjudic/symfony-api-skeleton your-app-name -sdev
注意:如您所见,我们使用"-sdev"标志,因为该项目没有官方的稳定版本。这仅告诉Composer,使用此存储库的最新版本是安全的。该项目还没有合适的版本,但很快就会有。
创建您的本地envfile
使用"enviles"实现"external"配置。
".env"文件是主要的配置文件,目前不需要修改。
".env.local"文件是一个额外的envfile,将包含依赖于您的安装的配置数据。您需要创建并填写此文件。
要创建它,复制dist文件".env.local.dist"并填写空值
- "APP_SECRET"是用于编码半敏感数据的密钥字符串。请给它一个随机值。
- "DATABASE_URL"是您的数据库连接字符串。
- 目前请保留"JWT_PASSPHRASE"为空,我们将在下一部分讨论它。
配置JWT加密
您可以按照LexikJwtAuthenticationBundle的网站上的说明创建JWT加密的密钥和口令。
警告:确保写下您用于生成密钥的口令。
警告:公钥/私钥不会存储在您的Git存储库中(如果您创建了)。您需要为每个安装提供/创建它们。
密钥和口令不再位于配置文件夹中。它们在您的envfiles中设置。您可以使用"JWT_SECRET_KEY"和"JWT_PUBLIC_KEY"在".env"文件中更改密钥位置。
您必须在".env.local"文件的"JWT_PASSPHRASE"变量中设置您的口令值。
完成Symfony安装
现在一切配置就绪后,您可以完成Symfony的安装(清除缓存并安装资源)
composer run auto-scripts
创建您的第一个迁移
在生成任何迁移之前,请确保您已配置了数据库的服务器版本。生成迁移时的数据库版本必须与生产环境中使用的版本相同。
生成一个反映默认用户模型的新的迁移文件。
php bin/console make:migration
使用方法
开发服务器
为了方便使用,您可以使用Symfony的开发服务器来开发您的应用程序。(但请注意,这不适合生产环境!)您也可以将应用程序放入一个传统的Web服务器,使其目标为“public/index.php”文件。
启动开发服务器以运行应用程序。
symfony server:start
现在,您的应用程序应该运行在 "https://:8000"。如果一切正常,您应该在 "https://:8000/_profiler/" 看到您的分析器。
认证
为了访问受保护的API路由,您必须获取一个JWT(JSON Web Token)。
登录路由在 "/auth/login"。
但是您仍然需要一个用户来尝试它!在数据库中手动插入一个用户
- 使用以下命令对密码进行编码:
php bin/console security:encode-password
- 在数据库中插入用户及其密码。
现在您可以调用登录路由
POST https://:8000/auth/login
{
"email": "your.email@test.com",
"password": "yourpassword"
}
应用程序应该响应一个令牌,您现在可以使用它作为Bearer令牌:对于需要认证的每个API调用,添加“Authorization: Bearer YOUR_TOKEN”头。
为了测试它是否正常工作,应用程序骨架中有一个默认路由需要认证:"/default"。
文档
您可以在以下位置访问您API路由的Nelmio/OpenAPI文档的Web GUI:"https://:8000/doc/"。
还有一个JSON版本可供使用:"https://:8000/doc.json"。
有关如何编写和自定义文档的更多信息,请参阅NelmioApiDocBundle的文档。