`
wbj0110
  • 浏览: 1602793 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

PHP API 框架开发的学习

阅读更多

基于互联网的应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给开发者来调用。对外提供的API 调用使得站点之间的内容关联性更强,同时这些开放的平台也为用户、开发者和中小网站带来了更大的价值。

在开发API前,你需要的是给API设定一个框架,这个框架一定是要简单的且是容易扩展的。下面就是用就来看看如何使用PHP来创建一个API。

API框架需要的特性

  • 面向对象和结构化的代码
  • 可修改的URL结构
  • 创建多个版本
  • 使用Hook来扩展框架API功能
  • API可连接数据库表
  • 可定义多种输出格式
  • 选择方法请求类型(GET, POST, PUT, DELETE)

API框架的组成部分

API Framework主要由下面三中类型元素组成:

  • Services
  • Hooks
  • Parsers

在一个运行的API中,每种类型的元素都有其自己的任务。下面就来详细说说每一种元素。

通常的API请求URL如下:

http://www.domain.com/api/version/service/method/param_name/param_key.extension

Service

Service Class是API请求的控制器。这个Class包含了API可以使用的method,所以Service Class会需要计算和处理数据。

为了使method可以被请求,你需要将method设置为公开(public),并为service method设置请求类型(GET, POST, PUT, DELETE)。

下面是一个Service Class的类,你可以设置默认的请求方式为GET,并且version method可以接受GET和POST请求。

<?php
class MyApi_Service_Helloworld extends Api_Service_IService{

public function __construct($api){
parent::__construct($api);

// Set execute request methods
$this->addAllowedMethod("execute", Api_Request::METHOD_POST);
$this->addAllowedMethod("version", Api_Request::METHOD_POST);
$this->addAllowedMethod("version", Api_Request::METHOD_GET);

}

public function execute($params, $config){
$this->code = 200;
return "Hello world";
}

public function version($params, $config){
$this->code = 200;
return "Version 1.0";
}

}

这里是一个可以使用的使用的API请求类型:

  • Api_Request::METHOD_GET
  • Api_Request::METHOD_POST
  • Api_Request::METHOD_PUT
  • Api_Request::METHOD_DELETE

如果你希望方法( method)名以驼峰式命名的话,如:

public myNewHelloWorld{}

那么你就需要在你的url中使用”my-new-hello-world”来请求这个方法(/v1/helloworld/my-new-hello-world.xml)。

Hook

Hook是一个可以绑定特定行为的类。哪些Hooks 会在执行力中执行特定的点(如图所示)。它可以让你在服务使用前修改数据。下面是一些可能的hook示例:

  • 监测用户使用的API key是否在数据库中存在。
  • 监测特定的IP地址是否是允许使用服务或行为的。
  • 在文件或者数据库中记录用户的请求日志。
  • 禁止特定的 IP使用API。
  • 限制IP每小时对API的请求数。

上面的只是一些示例,你可以发挥你的想象任意的添加Hook。下面是一个关于Hook的实例:

class Api_Hook_BlockIp extends Api_Hook_IHook {

public function execute(){

// Current called service
$service = func_get_arg(0);

// Get config array
$config = $this->api->getConfig();

// Stop if blocks is not configured
if(!isset($config['block'])) return;

// Convert comma separated list to array
$blocked = explode(',', $config['block']);

// Check if the user IP is blocked
// If blocked show him a message
if(in_array($_SERVER['REMOTE_ADDR'], $blocked)){
    throw new Api_Error('Spammer', 'Your IP address is blocked.');
}
}

}

为了使上面的Hook可以正常的工作,你需要在config文件中添加这样一行:

block = ip1,ip2,ip3

接下来就是讲解不同种类的hook了:

  • HOOK_CONFIG_LOADED: 这个hook是在加载了配置(config)请求的。他可以用来修改或添加一些配置信息
  • HOOK_BEFORE_SERVICE_EXECUTE: 这个hook是在服务执行前执行的,所以它可以用来校核用户身份,查看是否有具体的权限。
  • HOOK_MODIFY_PARSER: 使用这个Hook可以在输出数据解析前修改解析器。

如果要启用钩子则需要到程序的入口(endpoint.php)进行修改。

Parsers

解析器用来转化数据到特定的输出格式的。例如是XML,机械器就是用定义的APi请求文件扩展名来表示。例如:

  • /v1/helloworld.xml: 则使用Xml.php作为解析器
  • /v1/helloworld.json: 则使用Json.php作为解析器

你可以根据自己的需求定义标准的解析器,如:

  • XML
  • CSV
  • JSON
  • Printr
  • TXT

下面是一种类似PHP中print_r的输出格式示例:

class Api_Parser_Printr extends Api_Parser_IParser{

/**
* Content type
* @var string
*/
public $content_type = "text/plain";

/**
* Parse to XML
*
* @return string
*/
public function parse(){
return print_r($this->_data, true);
}

}

框架会根据命名规则自动寻找适合的输出格式。

要顺利的开发一个PHP API,除了以上的这些还需要做的有:

  1. 创建一个基本的API配置文件,并修改好程序的入口。
  2. 配置自己想要的REST URL结构。
  3. 记录接口中产生的错误。
分享到:
评论

相关推荐

    PHP Framework ThinkPHP-为API开发而设计的高性能PHP框架

    ThinkPHP 是一个流行的开源 PHP 框架,专为 API 开发设计,具有高性能和易用性的特点。在 PHP8.0 的环境下重构,ThinkPHP 针对现代 Web 应用开发的需求进行了优化,提供了丰富的功能和工具,极大地提高了开发效率。 ...

    ThinkPHP5为API开发而设计的高性能PHP框架

    ThinkPHP5是一个专为API开发设计的高性能PHP框架,它在保留快速开发和简洁易用的核心理念的同时,对技术进行了全面升级。这个框架的出现,旨在提高开发效率,提供更稳定、安全和高效的解决方案,尤其适用于构建...

    PHP Framework CareyShop——基于API而开发的高性能PHP商城框架系统(基于PHP5.6+).zip

    CareyShop是一个基于PHP5.6的高性能商城框架系统,专为API驱动的开发而设计。这个框架在PHP世界中提供了高效、灵活的解决方案,帮助开发者快速构建电子商务平台。下面我们将详细探讨CareyShop框架的一些核心特点、...

    高性能的 PHP API 接口开发 第2章 API接口的基本实现.rar

    2. **PHP框架与API开发**: PHP有许多优秀的框架如Laravel、Symfony、Slim等,它们提供了构建API的便利工具和最佳实践。例如,Laravel的`Route`和`Controller`机制,可以方便地定义和处理API路由,而Slim则以其轻量...

    tp5框架开发的restful API接口自动生成文档源码.zip

    在本文中,我们将深入探讨基于ThinkPHP5(简称TP5)框架开发RESTful API接口以及如何自动生成相关文档。RESTful API设计模式已经成为现代Web服务的主流,它以资源为中心,通过HTTP方法来操作资源,提供了简洁、清晰...

    php快速轻量级开发框架

    1. 快速开发:轻量级框架简化了开发流程,降低了学习曲线,使得开发者能更快地构建应用。 2. 高效性能:由于体积小,轻量级框架通常具有更好的执行效率,尤其在资源有限的环境中。 3. 易于理解和维护:良好的代码...

    快速开发后台框架

    3. **RESTful API 支持**:现代后台框架通常支持RESTful设计原则,方便前后端分离,与移动应用或前端框架无缝对接。 4. **插件系统**:允许开发者添加自定义功能,通过插件形式集成,增强框架的灵活性。 5. **模板...

    轻量级 PHP 接口开发框架 LyAPI

    开发简单:一个API就是一个函数,你只需要将数据返回,框架会自动将数据进行转换并输出。 易与拓展:LyAPI使用Composer管理依赖包,你可以下载自己需要的功能。 自动加载:LyAPI遵循PSR-4规范,并使用autoload,避免...

    APIPlatform是下一代PHPWeb框架旨在轻松创建API优先的项目

    APIPlatform是一个先进的PHP开发框架,专门设计用于构建API优先的应用程序。这个框架的出现是为了应对现代Web服务的需求,强调易用性、可扩展性和灵活性,让开发者能够快速地构建符合RESTful原则的高质量API。 API...

    高仿看云API开发文档中心框架模板

    【标题】"高仿看云API开发文档中心框架模板"是一个设计用于展示和管理API开发文档的框架模版,其灵感来源于看云平台,旨在提供一个美观且实用的界面,帮助开发者更有效地组织和分享他们的API接口信息。该模板不仅...

    speedPHP模板框架为移动端开发API接口

    **速度PHP(SpeedPHP)模板框架为移动端API接口开发** SpeedPHP是一款轻量级的PHP框架,专为快速开发Web应用程序而设计,尤其适合构建API接口。它以其高效的性能、简洁的代码结构和易于上手的特点深受开发者喜爱。...

    基于PHP的thinkthinkPHP高性能API开发框架设计源码

    本项目是基于PHP的thinkthinkPHP高性能API开发框架设计源码,包含25个文件,其中PHP源文件10个,Git忽略文件5个,Markdown文档2个,文本文件2个,

    API开发文档丨JAVA,PHP,数据库,框架等40多项API手册打包

    在本文中,我们将深入探讨API开发文档的重要性和其中包含的各种技术,包括Java、PHP、数据库以及各种框架的API。 首先,Java API是Java编程语言的核心库,包含了丰富的类和接口,为开发者提供了大量预定义的功能。...

    Laravel框架开发实战_源代码.zip

    通过这份“Laravel框架开发实战_源代码”的学习,你将能够深入了解这些核心概念,并在实践中运用它们,从而提升你的PHP Web开发技能。同时,教学资料通常会提供详细的步骤和解释,帮助你更好地理解和掌握每个知识点...

    一个基于php7快速 / 精简 / 高效 api程序开发框架apiframe-php7-framework

    一个基于php7的快速、精简api开发框架。mvcs层结构。支持读写分离连接、多库支持。支持composer功能扩展。非常方便地适用于开发APP服务器端接口程序。搭建好NGINX服务和PHP7环境,部署nginx配置,访问 ...

    基于PHP的DolphinPHP(海豚PHP)快速开发框架.zip

    **DolphinPHP(海豚PHP)快速开发框架详解** DolphinPHP,又称为海豚PHP,是一款基于PHP语言的轻量级、高性能的Web应用开发框架。它旨在简化开发流程,提高开发效率,同时保持代码的清晰性和可维护性。在这款框架中...

    大道PHP:LAMP+Zend+开源框架整合开发与实战(随书光盘源码2).rar

    《大道PHP:LAMP+Zend+开源框架整合开发与实战》是一本深入讲解PHP开发技术的书籍...通过这些章节的学习和实践,读者将全面掌握PHP开发的基本技能,并能在实际项目中灵活运用各种框架和技术,提升开发效率和代码质量。

    Slim是一款PHP微框架可以帮助你快速编写简单但功能强大的web应用和API

    Slim 是一个轻量级的 PHP 框架,它以其简洁、高效的设计理念,成为了开发者构建快速 web 应用和 RESTful API 的首选工具。这款框架的核心特点是“微”,意味着它只包含最基本的功能,允许开发者以最小的开销进行快速...

    基于PHP的叶绿素服务端API框架设计源码

    叶绿素服务端API框架项目源码,共26个文件,全部采用PHP语言编写,涉及多种文件...该项目是一个非MVC式或RESTful式的服务端API框架,旨在为开发者提供一种灵活简约的开发方式,支持快速构建高性能的服务端应用程序。

    PhpBoot专为开发RESTfulAPI设计的PHP框架

    **PHPBoot:面向RESTful API开发的PHP框架详解** PHPBoot是一个专为构建RESTful API设计的高效PHP框架,它的核心目标是降低API开发的复杂性,让开发者能够更加专注于业务逻辑,而不是底层的实现细节。本文将深入...

Global site tag (gtag.js) - Google Analytics