RESTful API使用场景

转载https://blog.csdn.net/z15818264727/article/details/78942725

一.什么是RESTful
RESTful是一种设计模式,或者说是一种设计规范,它并没有太多强制性的要求之类的,实际上它有的只是几个原则,当一个应用满足这些原则的时候,可以认为它是RESTful的。Roy Fielding博士提出RESTful是可以认为符合下面设计规范的应用,这些规范包括:
模型表示(Representations)
消息(Messages)
URIs
一致接口(Uniform interface)
无状态(Stateless)
资源之间的链接(Links between resources)
缓存(Caching)
这些规范的具体内容不再详述,可以参考任意的RESTful介绍都会有讲到。RESTful可以认为是一种建立在HTTP协议之上的设计模式,充分的利用了HTTP协议的特定,使用URL来表示资源,用各个不同的HTTP动词来表示对资源的各种行为。这样做的好处就是资源和操作分离,让资源的管理更加规范。

二.好处
1,应该说是在web中,通过浏览器来发送请求的时候,只能使用POST和GET。这个限制仅在RESTful服务的客户端为浏览器的时候才存在,当客户端为其他情况,而仅使用HTTP来通信的时候就没有这种限制了。这样做的好处就是资源和行为分离。

2,REST的核心是资源,并且资源是用统一资源定位符URL来标识的。概念上来讲,资源和他的状态(提供给客户的格式)是分开的。REST不做任何格式上的要求,但是一般包含XML和JSON。HTTP中的键值对这个题主应该讲的是HTTP报头中的值和属性吧,这个在RESTful中也是可以支持的。

3,给谁用的问题,可以给自己开发的应用,也可以给第三方用,其他有很多开放的API服务他们都是使用RESTful规范的。如果是在自己的应用中使用,这样的情况题主可能就无法通过表面现象来识别了,因为他作为一种通信方式被应用隐藏了。

4.取东西就要GET(GET就是安全的,不会修改服务资源),新增就要POST(POST就是不安全的),修改就要PUT(PUT就要幂等),删除就是DELETE(DELETE就要幂等)…
优雅的展示你的资源,甚至让别人不看协议就能找到这个资源,这个世界岂不更简单:
/古文
/古文/宋词/水调歌头
/古文/search?q=苏轼

另外在服务端的架构设计时,URI展示了你的视野范围和抽象规则,从上面的URI,我应该是一个古文归档服务中,是按唐诗\宋词\元曲这样归的类。

5.用 PHP 实现 RESTful 风格的 API,最重要的还是:路由的实现、HTTP 请求(request)的解析、HTTP (response)响应的良好封装和JSON 格式的良好支持;采用的PHP框架主要有Phalcon、Laravel、YII 等等

### 使用Restful API进行开发 #### Flask-RESTful框架简介 为了简化Web服务端的开发过程,开发者可以利用Python中的`Flask-RESTful`库来快速搭建RESTful API服务器。该库建立在轻量级Werkzeug工具包和Jinja2模板引擎之上,并且内置了许多实用的功能,使得创建API更加便捷高效[^1]。 #### 创建简单的RESTful应用实例 下面是一个基于Flask-RESTful实现的基础示例: ```python from flask import Flask, request from flask_restful import Api, Resource app = Flask(__name__) api = Api(app) class HelloWorld(Resource): def get(self): # GET请求处理函数 return {'hello': 'world'} def post(self): # POST请求处理函数 data = request.get_json() return {"received": data}, 201 # 将资源添加到路由中 api.add_resource(HelloWorld, '/') if __name__ == '__main__': app.run(debug=True) ``` 这段代码展示了如何定义一个名为`HelloWorld`的类继承自`Resource`基类,并实现了GET和POST两种HTTP方法对应的处理器。通过调用`add_resource()`方法注册这个资源及其URL路径,最后启动了一个本地运行的服务监听来自客户端的连接尝试。 #### 测试与验证 考虑到RESTful API的特点,在实际项目里应当重视持续集成下的自动化测试环节。对于上述例子而言,可以通过发送不同类型的HTTP请求来进行基本功能性的检验;而对于更复杂的应用场景,则建议采用单元测试框架配合模拟对象(Mock Object)技术完成更为严格的品质把控工作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值