Quote API
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.2
- laravel/framework: ^10.10
- laravel/sanctum: ^3.3
- laravel/tinker: ^2.8
Requires (Dev)
- fakerphp/faker: ^1.9.1
- laravel/pint: ^1.0
- laravel/sail: ^1.18
- mockery/mockery: ^1.4.4
- nunomaduro/collision: ^7.0
- phpunit/phpunit: ^10.1
- spatie/laravel-ignition: ^2.0
This package is auto-updated.
Last update: 2024-09-22 00:03:26 UTC
README
简介
此存储库包含Avrillo Conveyancing技术测试的代码。测试是创建一个简单的报价API,该API使用Kanye Rest API返回Kanye West的引言。
安装和设置
要安装项目,请在您选择的目录中运行以下命令
composer create-project --stability=dev ronappleton/quote-api quote-api
cd quote-api
vendor/bin/sail up -d
一旦sail完成容器构建,运行以下命令以迁移数据库
vendor/bin/sail artisan migrate
一旦数据库已迁移,运行以下命令以将引言填充到数据库中
vendor/bin/sail artisan quotes:cache
然后您可以通过以下链接访问API:https:///api/quotes?api_token=1234567890
API令牌在.env文件中设置,默认为1234567890。您也可以在.env文件中将API令牌设置为任何您选择的值。
测试
为了运行测试,请在构建容器后运行以下命令
vendor/bin/sail artisan test
方法论
kanye.rest API
调查kanye.rest API后,发现该API以JSON格式返回单个引言。API是一个简单的GET请求到https://api.kanye.rest端点。API以下格式返回单个引言
{ "quote": "I feel like I'm too busy writing history to read it." }
测试的要求是创建一个简单的报价API,该API返回Kanye West的引言。API应返回5个随机引言,并且可以刷新以返回5个更多的随机引言。
这提出了一个初步问题,因为kanye.rest服务每次请求只返回一个引言。
为了解决这个问题,我将创建一个命令,可以在应用程序设置时运行,以从kanye.rest API填充数据库中的引言。这将允许API返回5个随机引言。该命令还可以计划在设定的时间间隔运行,以保持数据库与新引言同步。
API必须能够刷新返回的5个随机引言,这仅仅是获取引言端点的功能,因此将被视为刷新功能。
在这次测试中允许使用缓存,因此我将利用缓存来存储从数据库返回的引言,以便更快地检索引言。
身份验证
测试要求API通过不使用包进行身份验证来保护。
API将使用简单的API令牌进行保护。
为此,我将在env文件中添加API_TOKEN并将其用于auth配置文件。
将使用中间件来检查每个对API的请求上的API令牌。中间件将检查令牌与配置的匹配,如果令牌有效,则允许请求继续。否则,请求将以401响应被拒绝。
API客户端
测试详细说明使用Laravel的Manager模式是一个加分项,因此我将在创建API客户端时利用此模式。这将允许API客户端的可扩展性,以便将来使用其他API。
测试
测试详细说明了功能测试的使用,因此我将为API端点创建功能测试。测试详细说明了单元测试是一个加分项,因此我将为API客户端和Manager模式创建单元测试,并将扩展端点测试以测试身份验证中间件。
我将首先编写这些测试,然后再编写代码来通过测试来开始构建。
备注
我已经对我的文件添加了严格的类型声明,并在可能的地方使用了类型提示以及返回类型声明。我还添加了文档块到我认为必要的位置的函数和类中。