nickbeen / rick-and-morty-api-php
The Rick And Morty API PHP Client
Requires
- php: ^8.1
- ext-json: *
- guzzlehttp/guzzle: ^7.4
- netresearch/jsonmapper: ^4.0
Requires (Dev)
- phpunit/phpunit: ^10.1
README
这是一个用于https://rickandmortyapi.com上的Rick and Morty API的PHP包装器。
使用此PHP客户端,可以获取Rick and Morty中角色、剧集和地点的所有信息,而无需手动处理Curl调用和JSON响应。此库不返回API提供的相同JSON,而是将所有内容封装在方便的PHP类对象中。Rick and Morty API由Axel Fuhrmann创建。
要求
- PHP >= 8.1
安装
使用Composer将库安装到您的项目中。
composer require nickbeen/rick-and-morty-php-api --no-dev
使用方法
初始化一个Character
、Episode
或Location
模型,并使用可用的工具在该模型中列出、检索或搜索。当使用无效参数、检索不存在的模型或Rick and Morty API不可用时,库返回NotFoundException
。在您的应用程序中实现try块以最佳方式处理异常。
集合
对所有角色、剧集和地点的请求以及带有搜索参数的查询将返回一个包含结果的数组。
集合对象
信息对象
使用方法
有关集合使用的说明,请参阅角色、剧集和地点部分以获取更多详细信息示例。
API
此库包含一个有用的方法,可以返回一个包含Rick and Morty API所有端点的Api
对象。
API对象
使用方法
获取一个包含检索角色、剧集和地点端点的Api
对象。
$api = new Api(); $api->get(); echo $api->characters; echo $api->episodes; echo $api->locations;
角色
检索Rick and Morty中的任何角色,浏览所有角色或使用搜索参数查找特定角色。
角色对象
起源对象
地点对象
列出角色
从第一页检索包含下一个20个角色的Collection
对象。
$characters = new Character(); $characters->get(); foreach ($characters->results as $character) { echo $character->name; }
从第二页检索包含下一个20个角色的Collection
对象。
$characters = new Character(); $characters->page(2) ->get(); foreach ($characters->results as $character) { echo $character->name; }
获取角色
检索id为1的Character
对象。
$character = new Character(); $character->get(1); echo $character->name;
获取多个角色
检索包含id为1和2的Character
对象的数组。
$characters = new Character(); $characters->get(1,2); foreach ($characters as $character) { echo $character->name; }
搜索角色
可以根据搜索参数(如物种和名称)搜索角色。对于性别和状态,可以使用Gender枚举对象和Status枚举对象在IDE中进行自动完成。
性别对象
状态对象
检索包含所有活着男Rick的Collection
。
$characters = new Character(); $characters->withGender(Gender::Male) ->withName('Rick') ->withStatus(Status::Alive) ->get(); foreach ($characters->results as $character) { echo $character->name; }
剧集
检索Rick and Morty中的任何剧集,浏览所有剧集或使用搜索参数查找特定剧集。
剧集对象
列出剧集
从第一页检索包含前20个剧集的Collection
对象。
$episodes = new Episode(); $episodes->get(); foreach ($episodes->results as $episode) { echo $episode->name; }
从第二页检索包含下一个20个剧集的Collection
对象。
$episode = new Episode(); $episode->page(2) ->get(); foreach ($episodes->results as $episode) { echo $episode->name; }
获取剧集
检索id为1的Episode
对象。
$episode = new Episode(); $episode->get(1); echo $episode->name;
获取多个剧集
检索包含id为1和2的Episode
对象的数组。
$episodes = new Episode(); $episodes->get(1,2); foreach ($episodes as $episode) { echo $episode->name; }
搜索剧集
可以根据搜索参数(例如剧集代码(如S01E01)和名称)搜索剧集。
检索包含第一季所有剧集的Collection
对象。
$episodes = new Episode(); $episodes->withEpisode('S01') ->get(); foreach ($episodes->results as $episode) { echo $episode->name; }
位置
可以检索Rick and Morty中的任何位置,浏览所有特色位置或使用搜索参数找到特定位置。
地点对象
列出位置
检索第一页前20个位置的Collection
对象。
$locations = new Location(); $locations->get(); foreach ($locations->results as $location) { echo $location->name; }
检索第二页下20个位置的Collection
对象。
$locations = new Location(); $locations->page(2) ->get(); foreach ($locations->results as $location) { echo $location->name; }
获取位置
检索id为1的Location
对象。
$location = new Location(); $location->get(1); echo $location->name;
获取多个位置
检索包含id为1和2的Location
对象的数组。
$locations = new Location(); $locations->get(1,2); foreach ($locations as $location) { echo $location->name; }
搜索位置
可以根据搜索参数(例如维度和名称)搜索位置。
检索维度C-137内的所有位置的Collection
对象。
$location = new Location(); $location->withDimension('Dimension C-137') ->get(); foreach ($locations->results as $location) { echo $location->name; }
常见问题解答(FAQ)
API的限制是什么?
API是开放的,无需认证。根据R语言的实现Mortyr,API每天允许每个IP地址进行10,000次请求,之后任何请求都将导致429(请求过多)响应。
在集合中能否每页获得超过20个结果?
API设计上每页返回20个结果,这无法调整。然而,可以通过在get()
方法中手动插入超过20个id来返回超过20个结果。
关于额外的过滤器呢?
不可能,这个库已经提供了API目前提供的所有可用过滤器。
为什么剧集的代码在Episode模型中被称为episode
?
这看起来是Rick And Morty API创建者的一个错误。有一个未解决的pull request,将字段重命名为code
。
许可证
此库根据MIT许可证(MIT)许可。有关更多详细信息,请参阅LICENSE。