thomas-claireau / bilemo
项目包管理器
Requires
- php: ^7.1.3
- ext-ctype: *
- ext-iconv: *
- api-platform/api-pack: ^1.2
- cocur/slugify: 3.1
- friendsofsymfony/http-cache-bundle: ^2.8
- friendsofsymfony/rest-bundle: 2.5.0
- fzaninotto/faker: ^1.9
- guzzlehttp/psr7: ^1.6
- jms/serializer-bundle: ^3.5
- knplabs/knp-paginator-bundle: 4.1.1
- lexik/jwt-authentication-bundle: ^2.6
- liip/imagine-bundle: 2.0.0
- php-http/guzzle6-adapter: ^2.0
- sensio/framework-extra-bundle: ^5.1
- symfony/apache-pack: ^1.0
- symfony/asset: 4.2.*
- symfony/cache: 4.2.12
- symfony/console: 4.2.*
- symfony/dotenv: 4.2.*
- symfony/expression-language: 4.2.*
- symfony/flex: ^1.3.1
- symfony/form: 4.2.*
- symfony/framework-bundle: 4.2.*
- symfony/http-foundation: 4.2.12
- symfony/monolog-bundle: ^3.1
- symfony/orm-pack: *
- symfony/process: 4.2.*
- symfony/security-bundle: 4.2.*
- symfony/serializer-pack: *
- symfony/swiftmailer-bundle: ^3.1
- symfony/translation: 4.2.*
- symfony/twig-bundle: 4.2.*
- symfony/validator: 4.2.*
- symfony/web-link: 4.2.*
- symfony/webpack-encore-bundle: ^1.7
- symfony/yaml: 4.2.*
- vich/uploader-bundle: 1.11.0
Requires (Dev)
Conflicts
This package is auto-updated.
Last update: 2024-09-12 20:44:35 UTC
README
项目安装
通过Composer
composer create-project thomas-claireau/bilemo:dev-master
如果直接下载项目(或使用git clone
),请在项目根目录执行composer install
。
然后安装项目的前端依赖(用于启动api-platform界面)。请位于项目根目录
npm install
注意
数据库访问
该项目在Packagist上发布时没有数据库。这意味着您需要添加配置,在.env
文件中的DATABASE_URL
部分。
SQL注入和项目结构
为了获得与我的项目在数据库层面的类似结构,我还附带了在~src/Migrations/
文件夹中的迁移版本。因此,您可以通过以下命令在项目根目录中重建数据库:
php bin/console doctrine:migrations:migrate
创建数据库后,您还可以通过以下命令注入数据集
php bin/console doctrine:fixtures:load
启动项目
在项目根目录
- 要启动开发服务器,请执行
npm run dev-server
。 - 要启动symfony服务器,请执行
php bin/console server:run
。
身份验证
在此阶段,您对API的请求将被拒绝,因为您没有在项目中进行身份验证。请按照以下步骤操作
1. 为Json Web Token (JWT)生成SSH密钥
2. 获取或创建账户
在项目的fixtures中(src/DataFixtures
),添加您自己的账户。
您也可以使用以下账户
- 邮箱:root@root.fr
- 密码:root
3. 生成JWT
curl -X POST -H "Content-Type: application/json" http://bilemo.thomas-claireau.fr/authentication_token -d "{\"email\":\"YOUR_EMAIL\",\"password\":\"YOUR_PASSWORD\"}"
将YOUR_EMAIL替换为您的邮箱(例如:root@root.fr)和YOUR_PASSWORD替换为您的密码(例如:root)
您应该得到以下结果
{ "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1ODI4NzA2NzEsImV4cCI6MTU4Mjg3NDI3MSwicm9sZXMiOlsiUk9MRV9BRE1JTiJdLCJlbWFpbCI6InJvb3RAcm9vdC5mciJ9.J4lnq2gxrrKY5MB39AGvVYlM7ezYvTcgI-ITBdjxXNAu-5ePTqYdW6-SaJLyZCXdDeUXFi0An89oPVHIRgzdifLyav5CLxUnkX_aDQcxD4Gnh3pLJnOeRb7zBGN7XR8ZUG1raG6S84ZrIzdANCkz-xq24Z1F-ahPd30SxmgV0GNFh5bH7pzfgaJflhpi0KMWdL1dUJgK788UGJvVW7FYNcm9SsR3h3-wCd33bcJ1h60f4QQ-xxEMCZihfEhIvMmotcA1r" }
4. 使用JWT执行操作
获取生成的令牌以开始使用Bilemo的API。
curl -H "Authorization: Bearer {yourtoken}" {yourdomain}/api/{entrypoint}
要了解所有可用的entrypoints,请查看项目演示 👋
背景
BileMo是一家提供各种高端智能手机的公司。
您负责开发BileMo公司的智能手机展示。BileMo的业务模式不是直接在其网站上销售产品,而是向所有希望这样做的平台提供通过API(应用程序编程接口)访问目录的权限。因此,这是B2B(企业对企业)的独家销售。
因此,您需要公开一系列API,以便其他平台的Web应用能够执行操作。
客户需求
第一位客户终于与BileMo签订了合作协议!现在是战斗的号角,以满足第一位客户的需求,这将有助于立即实施和测试所有API。
经过与客户的密集会议,确定了一些信息。必须能够
查阅BileMo产品列表;查阅BileMo产品详情;查阅与客户关联的网站用户列表;查阅与客户关联的注册用户详情;添加与客户关联的新用户;删除客户添加的用户。只有被引用的客户才能访问API。API客户必须通过Oauth或JWT进行认证。
您可以选择部署Oauth服务器并调用它(使用FOSOAuthServerBundle)或使用Facebook、Google或LinkedIn。如果您决定使用JWT,您需要验证令牌的有效性;允许使用库。
数据展示
BileMo的第一个合作伙伴要求很高:它要求您按照Richardson模型1、2和3的规则公开数据。它要求您以JSON格式提供数据。如果可能的话,客户希望将响应缓存起来,以优化对API的请求性能。