majksa/api-template

Nette中的GraphQL API模板

安装: 0

依赖: 0

建议者: 0

安全: 0

星星: 1

分支: 1

类型:项目

This package is not auto-updated.

Last update: 2024-09-23 05:23:28 UTC


README

目标

主要目标是提供最佳准备的Nette GraphQL API启动项目,包括用户注册和登录。

关注点

  • 最新的PHP 8.0
  • mariadb
  • nette/*
  • 通过maxa-ondrej/nette-graphql(以及graphqlite)使用GraphQL
  • 通过Doctrine ORM(通过nettrine/*
  • 通过contributte/*使用Symfony组件
  • 通过CodeSnifferninjify/*进行编码风格检查
  • 通过phpstan进行静态分析
  • 通过Nette Testerninjify/*进行单元/集成测试

摘要

  1. 初始配置
  2. 安装
  3. 质量保证
    1. 格式化
    2. 静态分析
    3. 运行测试
  4. 数据库

初始配置

由于所有操作都在Docker容器内进行,不需要额外的配置!不过您需要先安装一些工具

  • docker和docker compose(从docker版本3.4开始包含在内)

可选

  • make - 简化脚本配置
  • php8.0composer - 如果您想在没有启动Docker容器的情况下运行测试

安装

  1. 创建docker-compose.local.dist.yml的本地副本
    • cp docker-compose.local.dist.yml docker-compose.local.yml
  2. 启动服务器并运行数据库迁移
    1. 使用Makefile
    2. 使用docker compose
  3. 后端已经在URL上运行: https://:8080/graphql

如果您想更改端口,可以在docker-compose.local.yml中进行更改: services > server > ports

使用Makefile

如果您已安装Make,可以按照以下步骤进行最简单的设置。

  1. make compose-dev - 启动Docker网络
  2. make prepare-db - 运行数据库迁移并生成测试数据

使用docker compose

  1. docker compose -f docker-compose.local.yml up -d --force-recreate --build --remove-orphans - 启动Docker网络
  2. docker exec -e NETTE_DEBUG=1 apitte-skeleton-app-1 bin/console orm:schema-tool:drop --force --full-database - 删除数据库模式
  3. docker exec -e NETTE_DEBUG=1 apitte-skeleton-app-1 bin/console migrations:migrate --no-interaction - 运行数据库迁移
  4. docker exec -e NETTE_DEBUG=1 apitte-skeleton-app-1 bin/console doctrine:fixtures:load --no-interaction --append - 生成测试数据

质量保证

为了确保我们的代码质量,我们使用3个不同的工具

  • CodeSniffer:用于格式化
  • PHPStan:用于静态分析
  • Nette Tester:用于运行测试

您可以使用composer run-script qa简单地运行所有这些。

为了确保在每次提交之前运行这些工具,请运行: git config core.hooksPath .hooks

格式化

我们遵循一些基本约定,这些约定已在phpcs.xml文件中设置。

  • 运行composer run-script cbf进行代码格式化和优化
  • 仅分析,运行composer run-script cs

静态分析

为了防止常见且容易发现的错误,我们运行非常有用的工具PHPStan。

  • 运行composer run-script phpstan

运行测试

测试是编码的重要组成部分,并在部署前暴露出大多数错误。

要创建一个新的TestCase,您只需复制/tests/Unit文件夹中的任何现有Test即可。如果希望添加新的集成测试,请在/tests/Integration文件夹中创建一个新的TestCase。

  • 运行所有测试:composer run-script tests
  • 运行测试覆盖率:composer run-script coverage

运行GraphQL请求

向API发送请求最简单的方式是使用Altair

Tracy栏

如果您想显示Tracy栏,这绝对可以做到!只需复制查询(如果有变量,则一并复制)并将它们添加到[GET]请求中的queryvariables中。