我目前正在寻找一种用PHP构建CardDAV服务器的方法。这是一个小的开发,希望能让我的公司共享来自/到多种设备的联系人,由自定义的后端/CRM提供服务。
我已经开始尝试,试图理解协议,但最终却困惑了两倍。然后,我阅读了IETF草案,但发现我甚至不了解WebDAV本身的基础知识。
你建议我从哪些方面开始学习CardDAV、WebDAV以及所有相关的东西?
发布于 2010-12-10 16:49:47
我很好奇,看看我是否能帮助解决一些围绕webdav的困惑。大多数IETF标准使用看起来非常生硬的语言。
WebDAV背后的基本原理
HTTP是为获取web资源而设计的,或者我应该说是阅读。它不是用来创作web资源的。
简而言之,WebDAV提供了一整套远程文档访问功能,包括文件存储、目录管理和对协作创作的支持。
考虑文件系统
理解webdav的最短路径是它将web资源视为文件系统的相似性。
就像文件夹一样,也有collections作为特殊的web资源,可以包含其他web资源。它需要将其区分为特殊资源,因为功能(适用于普通资源的方法不同)
于是,新的方法诞生了-- mkcol
就像files have attributes一样,web resources have meta-properties提供了关于web资源的一些细节。web资源内容本身可以像以前一样呈现(HTTP已经为您做到了这一点)。
简而言之,您还需要使用methods to enquire into meta-properties - PROPFIND并更改它们- PROPATCH。XML有效负载旨在查询和检索这些属性。
WebDAV的方法是将属性存储在文件体之外,可以在不获取整个正文的情况下进行查询,也可以在不更改正文的情况下进行更新。
某些属性是特定于webdav的。它们是出于需要而创建的。例如:Resourcetype Property。创建它是为了询问您是使用特殊集合资源还是包含在集合中的普通web资源。
请记住,GET (类似HTTP)获取资源,PUT修改资源,DELETE删除资源。
HTTP的限制
要理解webdav,您必须了解HTTP的局限性。
,
depth header,这样您就可以知道它是否需要在所有资源上工作。WebDAV资源模型
+--------+ +--------------+
|Resource|... |Property |
+--------+ +--------------+
+------++------+
|Webdav||custom|
+------++------+
+-----------+
|Dav root: /|......
+-----------+ | +--------+
|.....|Resource|
| +--------+
| +----------+
|.....|Collection|..... +----------+
' +----------+ |...|Collection|
| +----------+
| +--------+
|....|Resource|
+--------+发布于 2012-12-22 18:53:41
你也可以试试DAViCal,这是一个用PHP编写的带有Postgres后端的CalDAV和CardDAV服务器。我发现它非常可靠,但请注意:开发至少暂时停止了。在邮件列表上有一个补丁,可以让DAViCAl与最新的苹果产品兼容(这些产品有很多需要解决的bug)。
代码是开源的(不确定哪种许可适用),但如果你仍然想自己构建一些东西,你可以看看DAViCal是如何处理Cal-和CardDAV的。
http://www.davical.org
https://stackoverflow.com/questions/4405421
复制相似问题