`

REST风格

阅读更多

RESTful 原则介绍

REST的主要原则有:

用URL表示资源。资源就像商业实体一样,是我们希望作为API实体呈现的一部分。通常是一个名词,每个资源都用一个独一无二的URL来表示。

HTTP方法表示操作。REST充分利用了HTTP的方法,特别是GET、POST、PUT和DELETE。注意XMLHttpRequest对象实现了全部的方法,具体可以参看W3C HTTP 1.1 Specification。

也就是说,客户端的任何请求都包含一个URL和一个HTTP方法。回到上面的例子中,比赛显然是一个实体,那么对于一个特定比赛的请求就表示为:

http://example.com/matches/995

这种方式是清晰明了的,也许和精确命名的方式有所区别,但是只要遵循这种形式,我们就能很快的进行GET、DELETE、UPDATE和新建操作。

RESTful的原则:

  • URL表示资源
  • HTTP方法表示操作
  • GET只是用来请求操作,GET操作永远都不应该修改服务器的状态。但是这个也要具体情况进行分析,例如一个页面中的计数器,每次访问的时候确实引起了服务器数据的改变,但是在商业上来说,这并不是一个很重要的改变,所以仍然可以接收使用GET的方式来修改数据。
  • 服务应该是无状态的

    在有状态的会话中,服务器可以记录之前的信息。而RESTful风格中是不应该让服务器记录状态的,只有这样服务器才具备可扩展性。当然,我们可以在客户端使用cookie,而且只能用在客户端向服务器发送请求的时候。

  • 服务应当是“幂等”的

    “幂等”表示可以发送消息给服务,然后可以再次毫不费力的发送同样的消息给服务。例如,发送一个“删除第995场比赛”的消息,可以发送一次,也可以连续发送十次,最后的结果都会保持一致。当然,RESTful的GET请求通常是幂等的,因为基本上不会改变服务器的状态。注意:POST请求不能被定义为“幂等”,特别是在创建新资源的时候,一次请求创建一个资源,多次请求会创建多个资源。

  • 拥抱超链接
  • 服务应当自我说明

    例如 http://example.com/match/995 请求了一个具体的比赛,但是 http://example.com/match 并没有对任何实体进行请求,因此,应当返回一些介绍信息。

  • 服务约束数据格式。数据必须符合要求的格式

在PHP的程序中,想要实现这种REST风格的URL,仅仅依靠程序是不行的,还需要在服务器端配置rewrite规则,例如,对于一个REST风格的资源请求:

http://www.api.com/product/113

一般实现的脚本为

http://www.api.com/product.php?id=113

这个是基于QueryString的,也可以做一个统一的 index.php 入口,然后通过处理URI的方式实现,例如:

http://www.api.com/index.php/product/113

这样的URL,都可以通过rewrite来实现rest风格。总之,REST是一种程序设计的风格,为我们整理自己的应用设计提供了一个原则,在利用这些原则带来的遍历的同时,可以根据实际情况进行灵活的处理。

分享到:
评论

相关推荐

    设计 REST 风格的 MVC 框架

    ### 设计REST风格的MVC框架 #### 引言 随着互联网的发展,REST风格的架构逐渐成为主流,它不仅提供了一种简洁、直观的方式来进行网络通信,还对用户友好,利于SEO优化。传统的MVC框架如Struts,采用的是基于Action...

    rest风格+jdbctemplate的CRUD操作.rar

    使用SpringMVC+jdbctemplate实现REST风格的CRUD功能 完成功能:能够对用户进行CRUD操作,界面粗糙,只做演示 运行环境:eclipse2019.03+JDK8+Tomcat9.0.41+MySQL5.5 运用到的技术:spring+springMVC+jdbctemplate+...

    Jersey Java规范下REST风格Web Service开发框架

    Jersey Java 规范下 REST 风格 Web Service 开发框架 Jersey 是一个基于 Java 规范的 REST 风格 Web Service 开发框架,旨在帮助开发者快速构建 REST 风格 Web 服务。Jersey 是 JAX-RS(Java API for RESTful Web ...

    cxf开发rest风格接口jar

    【标题】"CXF开发REST风格接口所需的最小JAR包" 在Java开发中,Apache CXF是一个广泛使用的开源服务框架,它支持Web服务(SOAP)和RESTful接口的创建。REST(Representational State Transfer)风格的接口已经成为...

    REST风格的XCAP协议

    XCAP(eXtensible CAPacity,可扩展的能力协议)是REST风格的一个应用,主要用于管理网络设备或服务器上的用户数据,特别是与IMS(IP Multimedia Subsystem,IP多媒体子系统)相关的用户配置和服务。 **REST风格的...

    springboot与ssm项目构建(rest风格)

    本项目着重讲解如何结合Spring Boot和SSM来构建REST风格的Web服务。下面我们将深入探讨相关知识点。 首先,**Spring Boot** 是Spring框架的延伸,它简化了传统Spring应用的配置,通过内嵌的Tomcat服务器和自动配置...

    基于Ajax_REST风格的WebService的设计与实现

    基于Ajax_REST风格的WebService的设计与实现

    rest风格webservice

    在初学者编写REST风格的Web服务时,通常会用到一些开发工具和技术,如Java的Spring Boot框架,它提供了方便的REST API支持;或者Node.js的Express框架,它们简化了REST服务的开发过程。开发者需要理解HTTP协议,掌握...

    基于REST风格的RBAC模型研究

    ### 基于REST风格的RBAC模型研究 #### 概述 随着互联网技术的不断发展,Web应用系统规模持续扩大,对于访问控制的需求也日益增长。传统的基于角色的访问控制(Role-Based Access Control, RBAC)模型在面对大规模...

    rest风格webservice框架

    RESTLET介绍 Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务。...该程序已经实现了rest风格的API,二次开发非常方便!

    REST风格的架构

    REST风格的架构是一种基于HTTP协议,使用统一的接口来交互数据和实现功能的软件设计模式。在Web服务领域,REST(Representational State Transfer,表述性状态转移)已经成为构建可伸缩、高性能网络应用的重要选择。...

    struts2的rest风格插件实例

    通过 struts.xml、struts.properties 或 web.xml 改变 struts.convention.default.parent.package 常量的值,让支持 REST 风格的 Action 所在的包默认继承 rest-default,而不是继承默认的 convention-default 父包...

    springmvc之rest风格的crud

    在Spring MVC框架中,REST(Representational State Transfer)风格是一种设计Web服务的常见方式,它强调资源的概念,并通过HTTP协议中的方法(GET、POST、PUT、DELETE)来操作这些资源。本教程主要针对初学者,讲解...

    用于创建 REST风格系统的框架

    ### 用于创建 REST 风格系统的框架 #### 表述性状态转移 (REST) 概念 表述性状态转移(Representational State Transfer,简称 REST)是一种架构风格,旨在简化客户端和服务端之间的交互,尤其适用于分布式环境中...

    Rest风格项目中遇到的问题

    在开发基于REST(Representational State Transfer)风格的项目时,我们常常会遇到一系列问题,这些问题可能涉及API设计、状态管理、错误处理、安全性和性能优化等多个方面。REST是一种架构风格,用于构建分布式系统...

    03_rest风格简介

    REST风格是互联网应用设计的重要原则,尤其在微服务架构中广泛应用。Spring框架,作为Java领域最流行的开源框架之一,对RESTful API的支持非常完善。 在REST风格中,每个资源都有一个唯一的URI(Uniform Resource ...

    springMVC rest风格视图解析

    本篇文章将深入探讨Spring MVC如何实现REST风格的视图解析,以及如何根据请求的后缀名返回JSON或XML格式的数据。 首先,我们需要理解Spring MVC中的DispatcherServlet是如何工作的。DispatcherServlet是Spring MVC...

    SpringMVC-REST风格和SSM整合(注解版)彩色PPT版本.pptx

    REST风格简介 2、RESTful入门案例 入门案例 请求方法设定 请求路径参数 3、REST快速开发 RESTful快速开发(标准开发) @RestController 标准请求动作映射(4种) 4、案例:基于RESTful页面数据交互 5、SSM整合 ...

Global site tag (gtag.js) - Google Analytics