首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP语言中的CardDAV服务器

PHP语言中的CardDAV服务器
EN

Stack Overflow用户
提问于 2010-12-10 11:39:07
回答 2查看 6.8K关注 0票数 3

我目前正在寻找一种用PHP构建CardDAV服务器的方法。这是一个小的开发,希望能让我的公司共享来自/到多种设备的联系人,由自定义的后端/CRM提供服务。

我已经开始尝试,试图理解协议,但最终却困惑了两倍。然后,我阅读了IETF草案,但发现我甚至不了解WebDAV本身的基础知识。

你建议我从哪些方面开始学习CardDAV、WebDAV以及所有相关的东西?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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的局限性。

  1. 它是无状态的,迫使用户从头开始构建搜索。

  1. ,你不能说对一个特定集合中的所有资源都这样做。
  2. 它是只读的,不提供创作所需的协作功能。
  3. 它缺乏对多资源操作的支持。为了支持这一点,创建了depth header,这样您就可以知道它是否需要在所有资源上工作。

WebDAV资源模型

代码语言:javascript
复制
  +--------+    +--------------+
  |Resource|... |Property      |
  +--------+    +--------------+
                +------++------+
                |Webdav||custom|
                +------++------+

  +-----------+
  |Dav root: /|......
  +-----------+     |     +--------+
                    |.....|Resource|
                    |     +--------+
                    |     +----------+
                    |.....|Collection|.....   +----------+
                    '     +----------+    |...|Collection|
                                          |   +----------+
                                          |    +--------+
                                          |....|Resource|
                                               +--------+
票数 12
EN

Stack Overflow用户

发布于 2012-12-22 18:53:41

你也可以试试DAViCal,这是一个用PHP编写的带有Postgres后端的CalDAV和CardDAV服务器。我发现它非常可靠,但请注意:开发至少暂时停止了。在邮件列表上有一个补丁,可以让DAViCAl与最新的苹果产品兼容(这些产品有很多需要解决的bug)。

代码是开源的(不确定哪种许可适用),但如果你仍然想自己构建一些东西,你可以看看DAViCal是如何处理Cal-和CardDAV的。

http://www.davical.org

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4405421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档