RESTFul是否意味着URL不应该';不包含参数

RESTFul是否意味着URL不应该';不包含参数,rest,web,restful-architecture,Rest,Web,Restful Architecture,关于RESTFul这个概念我已经听了很长时间了,但我总是不能清楚地理解它。 我已经阅读了以下链接: 按照我的理解,RESTFul意味着URL不应该包含任何动词,这意味着URL代表一个唯一的资源。而且,GET方法不应该修改任何资源,我们应该使用POST来进行修改。 但我还有一个问题。 例如,如果我们想按用户名搜索用户,我们可以这样设计URL: www.example.com/user?name=test www.example.com/user/name/test 或者像这样: www.e

关于RESTFul这个概念我已经听了很长时间了,但我总是不能清楚地理解它。

我已经阅读了以下链接:

按照我的理解,RESTFul意味着URL不应该包含任何动词,这意味着URL代表一个唯一的资源。而且,GET方法不应该修改任何资源,我们应该使用POST来进行修改。

但我还有一个问题。
例如,如果我们想按用户名搜索用户,我们可以这样设计URL:

www.example.com/user?name=test
www.example.com/user/name/test
或者像这样:

www.example.com/user?name=test
www.example.com/user/name/test

您能告诉我哪一个是RESTFul吗?

当您使用rest时-您通过URI访问资源,并且可以通过HTTP请求类型对这些资源设置操作

您可以通过REST请求传递不同的参数,也可以传递资源标识符(通常通过URI传递-在您的情况下,www.example.com/user/name/test更为restfull),或者在您想要搜索时传递过滤器之类的内容,例如www.example.com/user/?age=

在本文中,您可以找到有关在rest中传递参数的最佳实践的更多信息:

当您使用rest时-您通过URI访问资源,您可以通过HTTP请求类型对这些资源设置操作

您可以通过REST请求传递不同的参数,也可以传递资源标识符(通常通过URI传递-在您的情况下,www.example.com/user/name/test更为restfull),或者在您想要搜索时传递过滤器之类的内容,例如www.example.com/user/?age=

在本文中,您可以找到有关在rest中传递参数的最佳实践的更多信息:
REST
资源是一个名词,uri中不应包含行为的概念,我们使用动词来表示我们正在执行的操作。基本上只有两种类型的资源:实例和集合。因此,好的做法是在uri中使用复数:
users
,而不是
user

www.example.com/users GET
-获取所有用户的集合

www.example.com/users/1 GET
-获取具体用户的实例

www.example.com/users POST
-创建新用户 等等

REST
不是一个严格的标准(而是一个列表),它没有说明应该如何实现搜索功能。但明确地说,您的第一个选项
/users?name=test
对我来说似乎更可取:tt很简单,这是一个巨大的好处

作为您可能需要研究的替代方案,这是一个制作可查询API的标准<代码>OData-类似的解决方案是:

/users?$filter=name eq 'test'
也是一个很好的灵感来源


希望这有帮助

REST
资源是一个名词,uri中不应该有行为的概念,我们使用动词来表示我们正在做的动作。基本上只有两种类型的资源:实例和集合。因此,好的做法是在uri中使用复数:
users
,而不是
user

www.example.com/users GET
-获取所有用户的集合

www.example.com/users/1 GET
-获取具体用户的实例

www.example.com/users POST
-创建新用户 等等

REST
不是一个严格的标准(而是一个列表),它没有说明应该如何实现搜索功能。但明确地说,您的第一个选项
/users?name=test
对我来说似乎更可取:tt很简单,这是一个巨大的好处

作为您可能需要研究的替代方案,这是一个制作可查询API的标准<代码>OData-类似的解决方案是:

/users?$filter=name eq 'test'
也是一个很好的灵感来源


希望这有助于

首先,REST不是一种协议,而只是一种体系结构风格,正确地遵循它可以将客户端与服务器API解耦,从而使它们能够容忍服务器端所做的更改。因此,它应该被视为分布式系统的一种设计方法

协议和体系结构风格之间的区别只是前者定义了服务器或客户端必须遵循的规则集。它的定义应尽可能精确,以减少歧义,从而减少不同供应商不兼容实现的可能性。后者仅包含如何设计整个应用程序和/或消息流的建议,并概述了坚持设计所获得的好处

根据这个定义,REST是用于浏览Web内容的交互样式的概括。Web浏览器能够使用多种协议,如HTTP、FTP、SMTP、IMAP等。。。它有不同的风格,但与任何特定于服务器的实现无关,尽管在通信过程中能够根据所用协议的规则与之交互。REST确实遵循这种方法,建立在实现RESTful architeturce方法的应用程序应该遵守的相同协议(通常只是HTTP)上,以保持与该协议的其他用户的兼容性

与Web浏览器类似,它不关心URI字符串是否包含任何语义结构,REST也不关心URI是如何设计的,或者资源是否以动词命名。两者都将使用URI来调用提供资源的服务器上的资源。因此,RESTful客户端不应该期望某个URI返回某个类型(=)。然而,客户机如何知道调用的URI将返回什么?这里的关键词是内容协商和媒体类型

Web浏览器和REST交换的格式在客户端和服务器之间协商。对于典型的Web浏览器,表示可能是HTML变体之一(即XHTML、HTML5等),但并不限于此。您的浏览器可能还能够处理其他媒体类型,即图片、视频、PDF