英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料
外文文献翻译
英文题目: Restful API Architecture Based on Laravel Framework
题 目 :基于Laravel框架的静态API架构
基于Laravel框架的静态API架构
Xianjun Chen1,a, Zhoupeng Ji1 , Yu Fan1,b,* and Yongsong Zhan2
1中国海口海口经济学院
2桂林电子科技大学,桂林电子邮件:
ahingini@126.com, b149471869@qq.com
摘要:Web服务一直是异构系统之间消息通信和集成的行业标准技术。RESTFUL API已经成为SOAP之后的主流Web服务开发范例,如何有效地构建RESTFUL API仍然是一个研究热点。本文提出了一种基于PHP语言和LARAVEL框架的RESTFUL API构建开发模型。讨论了构建RESTFUL API时需要解决的关键技术问题,并给出了基于LARAVEL的实现细节。1介绍
在软件行业快速发展的时代,互联网应用越来越受欢迎,其中网站用户每天可以服务数百万用户,并达到每日数十亿浏览量的水平。单片应用程序体系结构不适合当今的大型互联网应用程序,特别是在分布式和异构计算环境中,也不适合多团队协作开发模式。在可预见的未来,由于摩根理论的失败,互联网应用和物联网的迅速发展,应用的体系结构应该变得更加扁平化,分布式计算将成为主流的软件开发模式。在这种情况下,我们需要一个简单可靠的异构微服务开发模式。当我们在某些微服务基础架构上构建应用程序时,开发人员可以专注于业务流程,并将框架中的所有关于进程间通信的复杂问题留给框架。
2 API技术
REST是关于Web应用程序异构互通的技术规范。 采用REST可以实现简单,可扩展,高效,安全和可靠的架构。REST是一种基于HTTP协议的轻量级RPC协议,它简单易用,并且网络友好性使其成为多年来流行的RPC解决方案SOAP的无与伦比的替代方案。在使用REST时,可以轻松构建结构良好的Web应用程序,许多开发人员成功创建了基于Ajax和Restful Web服务的简单而强大的API。
2.1 Restful API
具象状态传输(REST)或RESTful Web服务是提供互联网上计算机系统互操作性的一种方式。 符合REST的Web服务允许请求系统使用统一和预定义的无状态操作集[2]访问和操作Web资源的文本表示。
代表性状态转移这一术语在Roy Fielding的博士论文[3][4]中于2000年引入和定义。 Fielding使用REST来设计HTTP 1.1和统一资源标识符(URI)[3][5][6]]。 资源是一种可以访问的信息,例如应用程序对象,数据库记录,算法等等。 每个资源都由唯一的URI(统一资源标识符)标识,REST以“/ user / name”的形式表示URI,以及对HTTP方法GET,PUT,POST,DELETE,HEADER和OPTIONS的操作,从而产生下一个资源被转回给呼叫者。REST的一个重要特征是服务器端在多个交互之间保持无状态,群集中的每个服务器都可以在每个请求上为客户端提供服务。
2.2 LNMP堆栈
LNMP是Web开发堆栈的原型模型,命名为其原始的四个开源组件的名称的首字母缩略词:Linux操作系统,Nginx HTTP服务器,MySQL关系数据库管理系统(RDBMS)和PHP编程语言。 作为解决方案堆栈,LAMP适用于构建动态网站和Web应用程序。
图1 LNMP堆栈
-
- Laravel框架
Laravel[1]是一个自由,开源的PHP web框架, 由Taylor Otwell创建和开发的模型-视图-控制器(MVC)建筑模式。Laravel的一些功能是模块化的,包括包装系统与一个专门的依赖管理器。laravel框架很强大并且很容易理解,框架本身提供身份验证,路由,会话管理器,缓存,IoC容器和大量常用组件,还有惊人的数据库迁移工具和集成的单元测试支持,所有这些工具使开发人员能够构建复杂的应用程序。
3系统架构设计
一个复杂的基于Laravel的Web服务应用程序应该包含一些关键组件,例如路由引擎,中间件,MVC框架,ORM和认证组件。
当客户端通过HTTP向Laravel restful API发送请求时,Web服务器首先接收请求并传递给PHP引擎,然后从Laravel初始化例程开始实际执行。Laravel初始化例程完成一些配置,然后将请求传递给中间件引擎进行过滤,过滤后会有根据路由配置表负责请求调度的核心路由组件,最后由MVC控制器接管调度的请求。 通常,控制器负责应用程序逻辑执行并查询数据获取和持久性模型,视图组件接管最后一部分用于呈现页面的工作。 但是当我们构建Restful API时,页面渲染是无用的,所以只涉及到控制器和模型,在这个过程结束时只会返回使用JSON编码的数据。整个过程如图2所示。
图2系统架构
3.1中间件
HTTP中间件的主要目的是为了在实际的逻辑过程之前提供一个过滤HTTP请求的方便机制,中间件链接在一起做一个一个的过滤过程。 这些中间件处理读取和写入HTTP会话,确定应用程序是否处于维护模式,验证CSRF令牌等等。
Laravel中存在两种中间件,一种用于HTTP过滤,另一种用于路由过滤。 该请求只有在它可以通过所有HTTP中间件,然后路由中间件之后才能触发控制器。
核心组件驱动Laravel是类“IlluminateFoundationHttpKernel”,它在所有请求流经的中心位置充当内核服务器,HTTP内核还定义了所有请求都必须通过的HTTP中间件列表通过所有正在处理的应用程序。所有的中间件都依赖于一个基类“Illuminate Pipeline Pipeline”,中间件可以形成一个可链接的调用栈,从定义基类的可链式闭包实现中受益。
3.2路由
系统中的所有路由器[7]都位于名为routes的目录中,路由定义在初始化期间会自动加载并解析。 最简单的路由只能接受一个URI和一个闭包,只要URI被请求就会执行,但这是一种硬编码风格。 定义路由规则的一种更常见的方式是“routes / api.php”中的配置数组,每个规则在数组中找到配置项时添加,代码如下:
Route::resource( path, PathController);
一行“Route :: resource”函数调用定义了多个路由动作,如下表所示。 当这些路由规则生效时,请求URL“http://www.yourdomain.com/path”将被分派给名为“PathController”的控制器,并且将调用“Index()”函数来处理请求。
表1 URL模式
方法 |
URL路径 |
动作 |
路由器名称 |
GET |
/path |
Index() |
path.index |
GET |
/path/create |
Create() |
path.create |
POST |
/path |
Store(Request $ request) |
path.store |
GET |
/path/{args} |
Show($args) |
path.show |
GET |
/path/{args}/edit |
Edit($args) |
path.edit |
PUT/PATCH |
/path/{args} |
update(Request $request,$args) |
path.update |
DELETE |
/path/{args} |
destroy($args) |
path.destroy |
3.3 ORM
ORM(对象关系映射)是一种编程技术,用于在使用面向对象编程语言时在数据库和内存中的对象之间转换数据。 这实际上创建了一个“虚拟对象数据库”,可以在编程语言中进行操作,所有修改将自动同步到硬盘上的实际数据库。
Laravel附带的Eloquent ORM为您的数据库提供了一个美丽的,简单的ActiveRecord实现。 每个数据库表都有一个对应的“模型”,用于与该表进行交互。 模型允许您查询表中的数据,并将新记录插入表中。 在Eloquent ORM包中,定义了一个基类“Model”,其中包含许多数据库操作方法和实用工具,所有专用于应用程序的模型都应该继承此基类。
Eloquent模型通常放在app目录中,可以通过composer.json自动加载。 通常以“Illuminate DatabaseEloquentModel”为基础,子类定义为:
class User extends Model {}
Eloquent会将上述“用户”模型映射到“用户”表的下划线数据库对应关系,因此对“用户”模型的任何操作都将直接影响“用户”表。如果提供了指定的数据表名称,则可以覆盖此默认行为,如下面的代码所示:
class User extends Modek
{
protected$ table =user_table;
}
4智威汤逊和身份验证
JSON Web Token(JWT)是一种基于JSON的开放标准,用于创建声明一定数量声明的访问令牌。令牌由服务器密钥签名,用于客户端和服务器端的合法验证。 令牌被设计为紧凑的,URL安全的,并且通常用于在身份提供者和服务提供者之间传递经过身份验证的用户身份。
4.1 JWT在Laravel
由社区开发的名为“tymon/jwt-auth”的扩展包可以集成到提供JWT功能的Laravel框架中,我们可以使用下面的命令从composer安装它:
作曲家需要tymon/jwt-auth
安装完成后,应该为服务提供商配置“config/app.php”,并使用aliase:providers=gt;
[
Tymon JWTAuth Provides
JWTAuthServiceProvider ::class,
],
aliases =gt; [JWTAuth=gt; TymonJWTAuthFacades
JWTAuth::Class
],
而且,应该在“config / auth.php”中设置警
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[22854],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。