tims3l / restapi-bundle
tims3l restapi api symfony bundle
dev-develop
2022-10-28 15:02 UTC
Requires
- php: ^8.1
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- ext-pdo: *
- doctrine/orm: ^2.13
- psr/log: ^3.0
- spatie/url: ^2.1
- symfony/http-kernel: ^6.1
- symfony/orm-pack: ^2.2
- symfony/property-info: ^6.1
- symfony/validator: ^6.1
Requires (Dev)
- symfony/test-pack: ^1.0
This package is auto-updated.
Last update: 2024-09-28 19:04:20 UTC
README
Restapi bundle 是一个基于 Symfony
/ Doctrine
的 REST API
库,使用 PHP 8
编写。
要求
php 8.1
composer
symfony 6.1
安装
composer require tims3l/restapi-bundle:dev-develop cp vendor/tims3l/restapi-bundle/config/packages/tims3l_restapi.yaml config/packages/tims3l_restapi.yaml bin/console cache:clear
使用
您可以快速创建基于 REST
原则的 HTTP
端点。 RestApi
类负责通过 HTTP
端点进行标准的 CRUD
操作。
- 在
App\Entity
命名空间中创建 Doctrine 实体。- 在您的实体上使用
#[Api]
属性是很重要的。 - 您可以在这里看到
Product
实体的示例。
- 在您的实体上使用
- 在
App\Repository
命名空间中扩展Tims3l\Repository\AbstractRepostory
。- 您可以使用此
ProductRepository
类作为示例。
- 您可以使用此
- 这就是全部,您可以在新实体上使用标准的
CRUD
端点(POST
、PUT
、GET
、DELETE
)。底层逻辑确保所有端点都将以相同的JSON
格式响应,并且可以以相同的方式进行调用。
带有 product
实体的示例 REST API
插入产品
POST
/product
- 标头
Content-Type: application/x-www-form-urlencoded
- 数据
sku: sku-1
name: one
description: desc-one
price: 1000
- 标头
- 样本响应(HTTP 状态码:
201 Created
)
{ "success": true, "data": [ { "id": 1, "name": "one", "sku": "sku-one", "description": "desc-one", "price": 1000 } ], "errors": [] }
列出产品
GET
/product
- 样本响应(HTTP 状态码:
200 OK
)
{ "success": true, "data": [ { "id": 1, "name": "one", "sku": "sku-one", "description": "desc-one", "price": 1000 }, { "id": 2, "name": "two", "sku": "sku-two", "description": "desc-two", "price": 2000 } ], "errors": [] }
显示一个产品
GET
/product/{id}
- 样本响应(HTTP 状态码:
200 OK
)
{ "success": true, "data": [ { "id": 1, "name": "one", "sku": "sku-one", "description": "desc-one", "price": 1000 } ], "errors": [] }
修改产品
PUT
/product/{id}
- 标头
Content-Type: application/x-www-form-urlencoded
- 数据
description: modified-desc
- 标头
- 样本响应(HTTP 状态码:
200 OK
)
{ "success": true, "data": [ { "id": 1, "name": "one", "sku": "sku-one", "description": "modified-desc", "price": 1000 } ], "errors": [] }
删除产品
DELETE
/product/{id}
- 标头
Content-Type: application/x-www-form-urlencoded
- 数据
description: modified-desc
- 标头
- 响应总是空的(HTTP 状态码:
204 No Content
)
测试
单元测试
这些测试确保单个源代码单元(例如单个类)的行为符合预期。
您可以使用以下命令运行单元测试
vendor/bin/phpunit tests/Unit
应用程序
应用程序测试测试整个应用程序的行为。它们进行 HTTP 请求(真实和模拟的请求)并测试响应是否符合预期。
您可以使用 AbstractApiTest
类快速测试您的新端点。
- 简单地从一个新的最终类扩展
AbstractApiTest
类。 - 根据您的需求自定义
testPostProvider()
方法。 - 简单地使用以下命令运行新的测试
vendor/bin/phpunit tests/Application
注意:必须运行 HTTP 服务器才能处理应用程序测试。