我正在构建一个框架,并希望使用该框架的开发人员能够允许其部分内容既与其他站点共享数据,又允许其他站点添加/编辑/删除数据。
例如,如果有人创建了一个包含书评、作者、引用、代码示例、评论等内容的网站,开发人员可以使“书评”对其他站点只读,而“评论”对某些站点/用户可读写。这个想法是使用框架来构建应用程序,可以轻松地与其他应用程序相互连接。
我设想通过POST和GET来实现与站点的所有交互,具体如下:
- /books.php?category=ruby (返回有关Ruby图书的XML集合)
- /books.php?id=23 (返回特定书籍的XML)
- /books.php?action=add&title=AdvancedRuby&description=....&securityId=923847203487
- /books.php?action=delete&id=342&securityId=923847203487
其他应用程序也可以通过以下方式“发现和消费”某个站点的内容:
- /discover.php (返回所有公共类和可用动作的XML)
实际上,这就是我需要的,以使该框架成为开发人员快速创建松散连接站点的一种方式。
我想知道的是,在开始实现之前,REST的重要/有趣部分是否还存在我不了解但应该构建到框架中的部分,例如:
- REST需要GET、POST、PUT和DELETE。为什么我需要“PUT”和“DELETE”?如果不使用它们,我是否会失去利用某些标准的机会?
- 我的“discover.php”文件类似于Web服务中的WSDL文件。在REST的描述中,我很惊讶似乎没有一种标准的方法来发现RESTful服务提供的服务,或者有吗?
最终,我希望拥有多个具有相同丰富类的网站,例如“BookReview”,以便客户端网站能够执行以下代码:
$bookReview = new BookReview("http://www.example.com/books.php?id=23"); $book->informAuthor("在我们的网站上发表了有关您书评的评论...");
然后,服务器站点会向该评论的作者发送电子邮件。 这种类型的交互是否是RESTful哲学的组成部分,还是REST仅仅是通过XML、JSON进行数据交换?