ftm-pm / symfony-api
SymfonyApi 配置了用于创建 REST API 的组件。
Requires
- php: ^7.1.3
- ext-iconv: *
- api-platform/core: ^2.1
- doctrine/annotations: ^1.6
- gedmo/doctrine-extensions: ^2.4
- gesdinet/jwt-refresh-token-bundle: ^0.3.2
- gfreeau/get-jwt-bundle: 2.0.x-dev
- guzzlehttp/guzzle: ^6.3
- lexik/jwt-authentication-bundle: ^2.4
- nelmio/cors-bundle: ^1.5
- symfony/asset: ^4.0
- symfony/console: ^4.0
- symfony/expression-language: ^4.0
- symfony/flex: ^1.0
- symfony/framework-bundle: ^4.0
- symfony/lts: ^4@dev
- symfony/maker-bundle: ^1.0
- symfony/orm-pack: ^1.0
- symfony/swiftmailer-bundle: ^3.2
- symfony/twig-bundle: ^4.0
- symfony/validator: ^4.0
- symfony/yaml: ^4.0
Requires (Dev)
- symfony/dotenv: ^4.0
- symfony/var-dumper: ^4.0
Conflicts
Replaces
This package is not auto-updated.
Last update: 2020-01-24 17:41:44 UTC
README
SymfonyApi 配置了用于创建 REST API 的组件。
俄语文档 在此处。
设置
SymfonyApi 是一个包含组件的 symfony/skeleton 应用程序
安装
运行 Composer 命令创建新项目
composer create-project ftm-pm/symfony-api my-project
配置
安装后,您需要设置环境变量。您可以在 .env 文件中查看变量。
下一步,运行命令更新数据库。
php bin/console d:s:u --force
SymfonyApi 使用 JWT 开发了授权。您可以在此处查看文档。
要创建新用户,您可以使用任何 REST 客户端。您应该向 http://my-project/api/register 发送带有参数的新请求
{ "username": "johndoe", "password": "test", "email": "johndoe@example.com" }
或使用 curl
curl -X POST http://my-project/api/register -d username=johndoe -d password=test -d email=johndoe@example.com
确认电子邮件后,获取令牌。向 http://my-project/api/token
发送新请求
{ "username": "johndoe", "password": "test" }
或使用 curl
curl -X POST http://my-project/api/token -d username=johndoe -d password=test
SymfonyApi 返回两个字段
{ "token": "...", "id": "...", "refresh_token": "..." }
对于授权,您必须在任何请求中发送头信息:Authorization: Bearer your_token。
使用
SymfonyApi 上开发的 REST API 使用 api-platform 组件。您可以在此处查看完整文档。
例如
- 序列化过程
- 事件系统
- 数据提供者
- 安全
- 以及其他
SymfonyApi 功能
SymfonyApi 包含
- 认证(登录、注册、getToken、refreshToken)
- 本地化逻辑
- 与 media-server 项目集成
认证
对于在应用程序中组织用户,没有使用 FOSUserBundle。与用户相关的必要部分已被移植,与事件、个人账户和其他不必要信息相关的所有部分都被跳过了。
如果您想使用 FOSUserBundle,您可以删除与用户相关的所有文件,包括 FOSUserBundle 并配置 security.yaml。
使用 JWT 进行认证。您可以在此处查看文档。
本地化
Gedmo Translatable 在 SymfonyApi 上实现本地化。为了使 api-platform 返回翻译,实体类必须实现 Gedmo\Translatable\Translatable 接口。
翻译字段将看起来像
{ "translations": { "ru": { "field1": "value1", "field2": "value2" }, "en": { "field1": "value1" } } }
同样,为了保存翻译,您必须将 translations
参数添加到查询中。
需要注意的是,Gedmo Translatable 不会重复翻译。如果应用程序将英语设置为默认语言,则字段 translations
英文将不会。例如
{ "name": "English Name", "translations": { "ru": { "name": "Russian Wonderful Name" } } }
这可以通过将数据复制到 App\Handler\Translation 中来修复。
包含内容
- api-platform/core
- doctrine/annotations
- gedmo/doctrine-extensions
- gesdinet/jwt-refresh-token-bundle
- gfreeau/get-jwt-bundle
- guzzlehttp/guzzle
- lexik/jwt-authentication-bundle
- nelmio/cors-bundle
- symfony/asset
- symfony/console
- symfony/expression-language
- symfony/flex
- symfony/framework-bundle
- symfony/lts
- symfony/maker-bundle,
- symfony/orm-pack
- symfony/swiftmailer-bundle
- symfony/twig-bundle
- symfony/validator
- symfony/yaml
反馈
- 创建一个新的问题
- 在 网站上 提出问题。
- 给 fafnur@yandex.ru 发送消息
许可证 MIT。