Java 只使用四种HTTP方法创建任何类型的restful API?
目前,我正在尝试构建一个restful HTTP后端框架 我读过一本名为“RESTfulWebservices”的书,它开启了这方面的一些脑力劳动 我现在对为什么面向资源的体系结构是一件好事有了更大的了解,但仍然有一些模糊的部分我无法理解。我会尽力解释我的想法,看看有没有人能让我更聪明 难道不能说一切都是物体吗。汽车、笔、书,甚至抽象的东西,比如一个想法和一个概念,都可以是一个物体。因为对象这个词只是人类对“某物”的发明 难道你不能说每个“东西”都是一种资源吗。硬币、电脑甚至债务都可能成为一种资源。但问题是谁。债务是一种资源,但不是欠谁的,而是欠谁的。人体残留物也是如此。它们是资源,但不是我们的资源,而是大自然的资源,因为它需要科学基础(编程)的内外平衡 资源(对象)似乎是名词。形容词和动词怎么样?实际上,似乎一切都可以用名词来描述。例如Java 只使用四种HTTP方法创建任何类型的restful API?,java,javascript,python,ruby,rest,Java,Javascript,Python,Ruby,Rest,目前,我正在尝试构建一个restful HTTP后端框架 我读过一本名为“RESTfulWebservices”的书,它开启了这方面的一些脑力劳动 我现在对为什么面向资源的体系结构是一件好事有了更大的了解,但仍然有一些模糊的部分我无法理解。我会尽力解释我的想法,看看有没有人能让我更聪明 难道不能说一切都是物体吗。汽车、笔、书,甚至抽象的东西,比如一个想法和一个概念,都可以是一个物体。因为对象这个词只是人类对“某物”的发明 难道你不能说每个“东西”都是一种资源吗。硬币、电脑甚至债务都可能成为一种资
- 形容词:这辆车是红色的
- 这辆车是红色的
- 形容词:我累了
- 名词:我有点累
- 动词:我杀了他
- 我创造了一个杀手
- 动词:我吻她
- 我创造了一个吻
result = Books.search("Foo");
我们必须思考:
result = Search.create(Books, "Foo");
你觉得这个怎么样?
考虑到这一点,我们可以只使用四种HTTP方法创建任何类型的restful API吗?
“创建”和“删除”是自然法则的另一部分吗?获取、发布、放置和删除和创建、读取、更新和删除并没有直接关系。它们通常可以,但需要注意的是,POST和PUT都可以执行更新和创建功能 POST方法应用于任何 请求所处的上下文 非幂等元 这意味着POST应用于任何更改服务器(数据)状态的函数,而GET、PUT和DELETE应用于任何不更改服务器状态的函数 编辑:
回答这个问题:是的。我已经看到了许多使用html头创建restful API的解决方案。它们都归结为使用目录结构和正确的HTML标题
通过将GET=Read和POST=Write等同起来,您可以仅使用GET和POST两种方法创建任何系统。 其他方法只是帮助为请求添加一些可见性 如果您确实想尝试根据对象对REST请求进行建模,我会这样做:
result = new Search(Books,"Foo").Get();
但是,我不确定这种映射是否特别有价值。RESTful API本质上是某种数据存储的接口:数据库、文件系统、分布式哈希表等。这意味着您确实不需要自定义谓词(无论如何,标准接口通常更好),因为您可以使用get、PUT、POST和DELETE完成所有操作 还需要注意的是,RESTful API专门调用使用现有HTTP方法来CRUD资源。此外,API不需要复杂或冗长才能有用甚至强大。在大多数情况下,简单是你的朋友。在许多情况下,简单结构和简单接口比等效的复杂结构/接口做得更好。以git为例,它使用的数据结构非常、非常、简单,因此git非常、非常、快速 至于你的问题:是的,人们总是这样做,而且很有效 但后来我想,只有“在” 和“出去”。也许只有 “创建”和“删除”。使得到 PUT是可以替换的动词 使用“创建读取”和“创建读取” 改变” 你可以这样做。您可以更进一步,使用
POST
完成所有操作。然后,您可以在HTTP请求中有一个信封,上面写着您想要执行的操作。您甚至可以只拥有一个端点,并根据HTTP请求的内容拥有尽可能多的不同操作。您可以有createBook
,updateBook
,getallbook
,等等
还有SOAP
作为一个必须针对SOAP和RESTful web服务进行构建、维护和编码的人,请帮自己(和其他人)一个忙,使用REST。我认为您将RESTful API的两个不同方面联系起来。将HTTP方法简化为
if(OUT){
if(file_exists) update_file
else if(file_size==0) delete_file
else create_file
}