tims3l/restapi-bundle

tims3l restapi api symfony bundle

安装: 7

依赖者: 0

建议: 0

安全性: 0

星星: 0

关注者: 1

分支: 0

开放性问题: 0

类型:symfony-bundle

dev-develop 2022-10-28 15:02 UTC

This package is auto-updated.

Last update: 2024-09-28 19:04:20 UTC


README

Restapi bundle 是一个基于 Symfony / DoctrineREST 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 端点(POSTPUTGETDELETE)。底层逻辑确保所有端点都将以相同的 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 服务器才能处理应用程序测试。

RestApi 示例

请参阅https://github.com/tims3l/restapi-demo