php 开发restful apii开发网站的要怎样架构

服务器端 API,大家都是怎么架构的呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
iOS 开发实用技术导航
NSHipster 中文版
cocos2d 开源 2D 游戏引擎
Google Analytics for Mobile 统计解决方案
Design Guides and Resources
Transcripts of WWDC sessions
Cocoa with Love
Cocoa Dev Central
iOS 开发实用书单
Style Guides
Useful Tools and Services
服务器端 API,大家都是怎么架构的呢?
00:29:40 +08:00 · 5676 次点击
我们接客户的app单子,也会做自己的app,在服务器端我们用了可能是大家眼里最初级,但容易上手的php+mysql,restful框架基于github上的一个开源框架CodeIgniter Rest Server(/chriskacerguis/codeigniter-restserver),做了自己的改造。 你们的是个什么样的情况呢?ps. 听说node.js在对app强劲的支持表现很久了,有推荐的restful框架吗?
第 1 条附言 &·&
09:41:56 +08:00
大家别光收藏,也来分享分享你的
29 回复 &| &直到
18:38:15 +08:00
& & 00:42:54 +08:00
php slim framework 可以试试, 轻量级, benchmark测试效率挺高的.这里有个guide:
这个是用Go写的
& & 08:45:15 +08:00 via iPhone
& & 09:41:18 +08:00
& & 09:41:29 +08:00
@ 感谢已发
& & 09:44:40 +08:00
rails 可以用来做 API 吗
& & 09:45:20 +08:00
Slim 做 Rest
API 很不错
& & 09:46:06 +08:00
@ 可以啊,我正在用rails + grape。
& & 09:49:39 +08:00
我之前也用楼主同样的方式做接口, 不过最终没有推出.
想问下压力如何.
& & 09:49:39 +08:00
用你熟悉的方案,php,python,ruby,go,java都可以
我直接python+tornado
& & 09:53:26 +08:00
node + express,搭建的很快。
& & 09:56:05 +08:00
& & 09:56:26 +08:00
赞同不过python flask 更轻量级
& & 09:59:13 +08:00
我一直没明白, REST API 一定要用 REST 框架来做吗?
有个自己熟悉的 web 框架, 定义好 URL, 各种 HTTP METHOD 的相应,
不就完成了这项工作吗?
& & 10:00:46 +08:00
公司用的是 Flask,自己写几个 helper function 就 REST 了。
& & 10:00:48 +08:00
根据需求选工具啊,如果单纯做api自己用,那你说的那个框架里的Format class岂不是没什么用
& & 10:04:05 +08:00
@ 麻烦啊,
& & 10:12:59 +08:00
@ 这么说restful框架帮忙做了很多事?
& & 10:15:48 +08:00
@ 是啊,你自己用纯PHP 和用 slim 框架对比下就知道了呗,能省很多事
& & 10:16:36 +08:00
@ 况且这种轻量框架又是一眼就看懂的,又不难学
& & 10:27:06 +08:00
& & 10:27:29 +08:00
ruanyifeng老师有篇文章讲RESTFUL API设计的,可以参考。
& & 11:01:26 +08:00
ruby的grape
& & 11:03:56 +08:00
& & 11:18:23 +08:00
@ 那我如果用大型框架呢?比如zend,symfony,laravel这种?跟什么resuful框架比有什么区别?
& & 11:50:35 +08:00
@ restful 框架要轻量些,拿到就可以用,MVC里就只有 C 层
& & 11:52:16 +08:00
@ 我没用过 slim,不过粗略看了下官网,应该和我想的一样。
& & 11:52:49 +08:00
也是用的codeigniter-restserver,还算方便,我觉得oauth, cahce和DB的优化这些经典问题比用什么框架还重要些
& & 13:30:35 +08:00
@ 目前没有遇到压力问题。
@ thanks
& & 18:38:15 +08:00
最简单的API Server:
& · & 1555 人在线 & 最高记录 1847 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.3 · 56ms · UTC 08:07 · PVG 16:07 · LAX 01:07 · JFK 04:07? Do have faith in what you're doing.用于构建 RESTful Web 服务的多层架构[图]
用于构建 RESTful Web 服务的多层架构[图]
  简介  当代
程序必须提供桌面风格(desktop-like)的富阅读
器界面,对外部客户端运用
Asynchronous JavaScript and XML (Ajax),或者 Google Web Toolkit (GWT) 以及 RESTful Web 服务。本文建议对 Ajax/GWT 运用
Resource Request Handler (RRH) 并从外部客户端运用
程序中调用,以及运用
一个 Browser Request Handler (BRH) 处理阅读
器的请求,生成可在阅读
器中显示的输出。两个处理程序共享一个通用 Business Logic Layer,并与 Data Access Layer 交互。RRH 和 BRH 的抽象简化了设计并帮助简化代码重用,产生更加灵活和可扩展的架构。  什么是 REST?  REST (REpresentation State Transfer) 描述了一个架构样式的网络系统,比如 web 运用
程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的运用
程序或设计就是 RESTful。   Web 运用
程序最主要
的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改良
性能。  在服务器端,运用
程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:运用
程序对象、数据库记录、算法等等。每个资源都运用
URI (Universal Resource Identifier) 得到一个惟一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态。运用
的 HTTP 要领
,比如 GET、PUT、POST 和 DELETE。Hypermedia 是运用
程序状态的引擎,资源表示通过超链接互联。
  另一个主要
的 REST 原则是分层系统,这表示组件无法
了解它与之交互的中间层以外的组件。通过将系统知识限定
在单个层,可以限定
整个系统的复杂性,促进了底层的独立性。  当 REST 架构的约束条件作为一个整体运用
时,将生成一个可以扩展到大量客户端的运用
程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改良
了子系统之间交互的可见性。REST 简化了客户端和服务器的实现。  RESTful Web 服务与 RPC 样式的 Web 服务最近,运用
RPC 样式架构构建的基于 SOAP 的 Web 服务成为实现 SOA 最常用的要领
。RPC 样式的 Web 服务客户端将一个装满数据的信封(包括要领
和参数信息)通过 HTTP 发送到服务器。服务器打开信封并运用
传入参数执行指定的要领
的结果打包到一个信封并作为响应发回客户端。客户端收到响应并打开信封。每个对象都有自己独特的要领
以及仅公开一个 URI 的 RPC 样式 Web 服务,URI 表示单个端点。它忽略 HTTP 的大部分特征
。  由于轻量级以及通过 HTTP 直接传输数据的特征
,Web 服务的 RESTful 要领
已经成为最多见
的替代要领
。可以运用
各种语言(比如 Java 程序、Perl、Ruby、Python、PHP 和 Javascript[包括 Ajax])实现客户端。RESTful Web 服务通常可以通过自动客户端或代表用户的运用
程序访问。但是,这种服务的简便性让用户能够与之直接交互,运用
它们的 Web 阅读
器构建一个 GET URL 并读取返回的内容。  在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是要领
调用的目标,要领
列表对所有资源都是一样的。这些要领
,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEADER 和 OPTIONS。
  在 RPC 样式的架构中,关注点在于要领
,而在 REST 样式的架构中,关注点在于资源 && 将运用
检索并操作信息片段(运用
表示的形式)。资源表示形式在表示形式中运用
超链接互联。  Leonard Richardson 和 Sam Ruby 在他们的著作 RESTful Web Services 中引入了术语 REST-RPC 混合架构。REST-RPC 混合 Web 服务不运用
信封包装要领
、参数和数据,而是直接通过 HTTP 传输数据,这与 REST 样式的 Web 服务是类似的。但是它不运用
的 HTTP 要领
操作资源。它在 HTTP 请求的 URI 部分存储要领
信息。好多个
知名的 Web 服务,比如 Yahoo 的 Flickr API 和 del.icio.us API 都运用
这种混合架构。  RESTful Web 服务的 Java 框架  有两个 Java 框架可以帮助构建 RESTful Web 服务。erome Louvel 和 Dave Pawson 开发的 Restlet是轻量级的。它实现针对各种 RESTful 系统的资源、表示、连接器和媒体类型之类的概念,包括 Web 服务。在 Restlet 框架中,客户端和服务器都是组件。组件通过连接器互相通信。该框架最主要
的类是抽象类 Uniform 及其详细
的子类 Restlet,该类的子类是专用类,比如 Application、Filter、Finder、Router 和 Route。这些子类能够一起处理验证、过滤、安全、数据转换以及将传入请求路由到相应资源等操作。Resource 类生成客户端的表示形式。JSR-311是 Sun Microsystems 的规范,可以为开发 RESTful Web 服务定义一组 Java API。Jersey是对 JSR-311 的参考实现。   JSR-311 提供一组注释,相关
类和接口都可以用来将 Java 对象作为 Web 资源展示。该规范假定 HTTP 是底层网络协议。它运用
注释提供 URI 和相应资源类之间的清晰映射,以及 HTTP 要领
与 Java 对象要领
之间的映射。API 支撑
广泛的 HTTP 实体内容类型,包括 HTML、XML、JSON、GIF、JPG 等。它还将提供所需的插件功能,以允许运用
程序添加其他类型。
  构建 RESTful Web 服务的多层架构  RESTful Web 服务和动态 Web 运用
程序在许多方面都是类似的。有时它们提供相同或非常类似的数据和函数,尽管客户端的种类不同。例如,在线电子商务分类站点
为用户提供一个阅读
器界面,用于搜索、查看和订购产品。如果还提供 Web 服务供公司、零售商甚至私人
能够自动订购产品,它将非常有用。与大部分动态 Web 运用
程序一样,Web 服务可以从多层架构的关注点分离中受益。业务逻辑和数据可以由自动客户端和 GUI 客户端共享。惟一的不同点在于客户端的本质和中间层的表示层。此外,从数据访问中分离业务逻辑可实现数据库独立性,并为各种类型的数据存储提供插件能力。  图 1 展示了自动化客户端,包括 Java 和各种语言编写的脚本,这些语言包括 Python、Perl、Ruby、PHP 或命令行工具,比如 curl。在阅读
器中运行且作为 RESTful Web 服务消费者运行的 Ajax、Flash、JavaFX、GWT、博客和 wiki 都属于此列,因为它们都代表用户以自动化样式运行。自动化 Web 服务客户端在 Web 层向 Resource Request Handler 发送 HTTP 响应。客户端的无状态请求在头部包含要领
信息,即 POST、GET、PUT 和 DELETE,这又将映射到 Resource Request Handler 中资源的相应操作。每个请求都包含所有必需的信息,包括 Resource Request Handler 用来处理请求的凭据。  图 1. 多层 Web 运用
程序环境图  查看原图(大图)
  从 Web 服务客户端收到请求之后,Resource Request Handler 从业务逻辑层请求服务。Resource Request Handler 确定所有概念性的实体,系统将这些实体作为资源公开,并为每个资源分配一个惟一的 URI。但是,概念性的实体在该层是不存在的。它们存在于业务逻辑层。可以运用
Jersey 或其他框架(比如 Restlet)实现 Resource Request Handler,它应该是轻量级的,将大量职责工作委托给业务层。Ajax 和 RESTful Web 服务本质上是互为补充的。它们都可以运用
大量 Web 技能
,比如 HTML、JavaScript、阅读
器对象、XML/JSON 和 HTTP。当然也不须要
购买、安装或配置任何主要组件来支撑
Ajax 前端和 RESTful Web 服务之间的交互。RESTful Web 服务为 Ajax 提供了非常基本
的 API 来处理服务器上资源之间的交互。  图 1 中的 Web 阅读
器客户端作为 GUI 的前端,运用
表示层中的 Browser Request Handler 生成的 HTML 提供显示功能。Browser Requester Handler 可以运用
MVC 模型(JSF、Struts 或 Spring 都是 Java 的例子)。它从阅读
器接受请求,从业务逻辑层请求服务,生成表示并对阅读
器做出响应。表示供用户在阅读
器中显示运用
。表示不仅包含内容,还包含显示的属性,比如 HTML 和 CSS。  业务准则可以集中到业务逻辑层,该层充当表示层和数据访问层之间的数据交换的中间层。数据以域对象或值对象的形式提供给表示层。从业务逻辑层中解耦 Browser Request Handler 和 Resource Request Handler 有助于促进代码重用,并能实现灵活和可扩展的架构。此外,由于将来可以运用
新的 REST 和 MVC 框架,实现它们变得更加容易,无需重写业务逻辑层。  数据访问层提供与数据存储层的交互,可以运用
DAO 设计模式或者对象-联系
方案(如 Hibernate、OJB 或 iBATIS)实现。作为替代方案,业务层和数据访问层中的组件可以实现为 EJB 组件,并取得 EJB 容器的支撑
,该容器可以为组件生命周期提供便利,管理持久性、事务和资源配置。但是,这须要
一个遵从 Java EE 的运用
服务器(比如 JBoss),并且可能无法
处理 Tomcat。该层的作用在于针对不同的数据存储技能
,从业务逻辑中分离数据访问代码。数据访问层还可以作为连接其他系统的集成点,可以成为其他 Web 服务的客户端。  数据存储层包括数据库系统、LDAP 服务器、文件系统和企业信息系统(包括遗留系统、事务处理系统和企业资源筹划
系统)。运用
该架构,您可以开始看到 RESTful Web 服务的力量,它可以灵活地成为任何企业数据存储的统一 API,从而向以用户为中心的 Web 运用
程序公开垂直数据,并自动化批量报告脚本。  结束语  REST 描述了一个架构样式的互联系统(如 Web 运用
程序)。REST 约束条件作为一个整体运用
时,将生成一个基本
、可扩展、有效、安全、可靠的架构。由于它简便、轻量级以及通过 HTTP 直接传输数据的特征
,RESTful Web 服务成为基于 SOAP 服务的一个最有前途的替代方案。用于 web 服务和动态 Web 运用
程序的多层架构可以实现可重用性、基本
性、可扩展性和组件可响应性的清晰分离。Ajax 和 RESTful Web 服务本质上是互为补充的。开发人员可以轻轻松松
Ajax 和 RESTful Web 服务一起建立
的界面。本文是一篇率先演示如何
文中介绍的多层架构构建 RESTful Web 服务和动态 Web 运用
程序的文章。它提供了 REST Web 服务、Ajax 和 Spring Web Flow 如何
一起生成类桌面富 Web 界面的示例。该教程
Jersey、Spring、MySQL 和 Tomcat。它在 Eclipse 中配置和实现。  根据与 the University Corporation for Atmospheric Research 的联合协议,National Science Foundation 的研究为本文提供了依据。National Center for Atmospheric Research 由 National Science Foundation 发起。此外,我还要感谢来自 NCAR 的 Markus Stobbs,他提供了很多好建议并负责编辑了本文。
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&}

我要回帖

更多关于 restful api 网站 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信