RESTful编程到底是什么?
当前回答
如果我没有直接回答这个问题,我很抱歉,但通过更详细的例子更容易理解这一切。由于所有的抽象和术语,字段化并不容易理解。
这里有一个很好的例子:
解释REST和超文本:垃圾邮件清理机器人Spam-E
更棒的是,这里有一个简单的例子(powerpoint更全面,但你可以在html版本中获得大部分内容):
http://www.xfront.com/REST.ppt或http://www.xfront.com/REST.html
看完这些例子后,我明白了Ken为什么说REST是超文本驱动的。但我实际上并不确定他是对的,因为/user/123是指向资源的URI,我不清楚它是否是非RESTful的,因为客户端知道它是“带外”的
xfront文档解释了REST和SOAP之间的区别,这也非常有用。当Fielding说:“这是RPC。它尖叫RPC。”时,很明显RPC不是RESTful的,所以了解这一点的确切原因很有用。(SOAP是RPC的一种类型。)
其他回答
这是一个令人惊讶的漫长的“讨论”,但至少可以说相当令人困惑。
IMO:
1) 没有一个大的酒吧和大量的啤酒,就没有一个安静的程序:)
2) 代表性状态转移(REST)是罗伊·菲尔丁(Roy Fielding)论文中提出的一种体系结构风格。它有许多限制。如果您的服务/客户尊重这些,那么它就是RESTful。就这样。
您可以(显著地)总结以下约束:
无状态通信遵守HTTP规范(如果使用HTTP)清晰传达传输的内容格式使用超媒体作为应用程序状态引擎
还有一个很好的帖子很好地解释了事情。
许多答案复制/粘贴了有效的信息,混淆了这些信息,增加了一些混乱。人们在这里谈论级别、RESTFulURI(没有这样的东西!)、应用HTTP方法GET、POST、PUT。。。REST不是关于这个或者不仅仅是关于这个。
例如,链接-有一个漂亮的API是很好的,但最终客户端/服务器并不真正关心你获得/发送的链接,重要的是内容。
最终,只要内容格式已知,任何RESTful客户端都应该能够使用任何RESTful服务。
什么是API测试?
API测试利用编程向API发送调用并获得产量。它的测试将被测段视为一个黑盒子。API测试的目的是在将部件协调到应用程序之前确认部件的正确执行和错误处理。
休息API
REST:代表性状态转移。
这是测试人员执行请求和接收响应的功能安排。在REST API中,通过HTTP协议进行交互。REST还允许计算机之间通过网络相互通信。对于发送和接收消息,它涉及使用HTTP方法,并且不像Web服务那样需要严格的消息定义。REST消息通常接受XML或JavaScript对象符号(JSON)形式的表单。
4常用API方法:-
GET:–它提供对资源的只读访问。POST:–用于创建或更新新资源。PUT:–用于更新或替换现有资源或创建新资源。DELETE:–用于删除资源。
手动测试API的步骤:-
要手动使用API,我们可以使用基于浏览器的REST API插件。
安装POSTMAN(Chrome)/REST(Firefox)插件输入API URL选择REST方法选择内容标题输入请求JSON(POST)单击发送它将返回输出响应
自动化REST API的步骤
我看到了一堆回答,说将用户123的所有内容放在资源“/user/123”是RESTful的。
罗伊·菲尔丁(Roy Fielding)创造了这个术语,他表示RESTAPI必须是超文本驱动的。特别是,“REST API不能定义固定的资源名称或层次结构”。
因此,如果您的“/user/123”路径在客户端上被硬编码,那么它就不是真正的RESTful。很好地使用HTTP,也许,也许不是。但不是RESTful。它必须来自超文本。
REST使用各种HTTP方法(主要是GET/PUT/DELETE)来处理数据。
您不需要使用特定的URL来删除方法(例如/user/123/delete),而是向/user/[id]URL发送delete请求,以编辑用户,检索有关向/user/[id]发送GET请求的用户的信息
例如,取而代之的是一组URL,可能看起来像下面的一些。。
GET /delete_user.x?id=123
GET /user/delete
GET /new_user.x
GET /user/new
GET /user?id=1
GET /user/id/1
您使用HTTP“动词”并具有。。
GET /user/2
DELETE /user/2
PUT /user
我认为restful的要点是将状态分离到更高的层,同时将互联网(协议)用作无状态传输层。大多数其他方法都会混淆。
这是处理互联网时代编程的根本变化的最佳实用方法。关于根本性的变化,Erik Meijer在这里就表演进行了讨论:http://www.infoq.com/interviews/erik-meijer-programming-language-design-effects-purity#view_93197 . 他将其概括为五种效果,并通过将解决方案设计成编程语言来提出解决方案。该解决方案也可以在平台或系统级别实现,无论使用何种语言。restful可以被视为在当前实践中非常成功的解决方案之一。
使用restful风格,您可以在不可靠的互联网上获取和操纵应用程序的状态。如果当前操作无法获得正确的当前状态,则需要零验证原则来帮助应用程序继续。如果它无法操纵状态,它通常使用多个确认阶段来保持正确。从这个意义上讲,rest本身并不是一个完整的解决方案,它需要web应用程序堆栈的其他部分中的功能来支持其工作。
鉴于这个观点,rest风格并没有真正与互联网或web应用程序绑定。这是许多编程情况的基本解决方案。它也不简单,它只是让界面变得非常简单,并且可以很好地处理其他技术。
只有我的2厘米。
编辑:两个更重要的方面:
无国籍是一种误导。它与restful API有关,而不是应用程序或系统。系统需要有状态。Restful设计是基于无状态API设计有状态系统。另一位QA的一些引用:REST对资源表示进行操作,每个资源表示由URL标识。这些通常不是数据对象,而是复杂的对象抽象。REST代表“代表性状态转移”,这意味着它是关于通信和修改系统中某些资源的状态的。幂等性:REST中一个经常被忽视的部分是大多数动词的幂等性。这导致了健壮的系统和语义精确解释之间的相互依赖性降低。
推荐文章
- ReferenceError: description没有定义NodeJs
- REST API - dto还是不是?
- OData和REST web服务的区别
- Symfony 2.x中的所有东西都应该捆绑吗?
- 用Spring我可以做一个可选的路径变量吗?
- 什么是HTTP“主机”报头?
- 用Python构建最小的插件架构
- 哪个HTTP状态代码表示“尚未准备好,稍后再试”?
- Django REST框架:向ModelSerializer添加额外字段
- 如何阻止恶意代码欺骗“Origin”报头来利用CORS?
- 模式、表和数据库之间的区别是什么?
- 为什么说“HTTP是无状态协议”?
- 我需要HTTP GET请求的内容类型报头吗?
- REST和RPC之间的Web服务差异
- 单页应用:优点和缺点