Quote API

安装: 1

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:项目

dev-master 2024-01-21 22:42 UTC

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模式创建单元测试,并将扩展端点测试以测试身份验证中间件。

我将首先编写这些测试,然后再编写代码来通过测试来开始构建。

备注

我已经对我的文件添加了严格的类型声明,并在可能的地方使用了类型提示以及返回类型声明。我还添加了文档块到我认为必要的位置的函数和类中。