gpt4 book ai didi

php - PHP 中的 CardDAV 服务器

转载 作者:可可西里 更新时间:2023-11-01 00:01:21 24 4
gpt4 key购买 nike

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

我开始四处游玩,试图理解协议(protocol),但最终却更加困惑。然后我阅读了 IETF 草案,但发现我什至不了解 WebDAV 本身的基础知识。

您建议我从哪些方面开始学习 CardDAV、WebDAV 以及所有相关内容?

最佳答案

我很想知道我是否可以帮助解决有关 webdav 的一些困惑。大多数 IETF 标准使用的语言看起来非常晦涩。

WebDAV 背后的基本原理

HTTP 是为获取网络资源而设计的,或者我应该说是阅读。它不是用来创作网络资源的。

简而言之,WebDAV 提供了一整套远程文档访问功能,包括文件存储、目录管理和协作创作支持。

想想文件系统

理解 webdav 的最短路径是将 Web 资源视为文件系统的相似性。

就像文件夹一样,有集合作为特殊的网络资源,可以包含其他网络资源。它需要将其区分为特殊资源,因为功能(适用于普通资源的方法不同)

于是新的方法诞生了——mkcol

就像文件有属性一样,网络资源有元属性,它提供了关于网络资源的一些细节。 Web 资源内容本身可以像以前一样呈现(HTTP 已经为您完成了)。

简而言之,您还需要有查询元属性的方法 - PROPFIND 并更改它们 - PROPATCH。 XML 有效负载旨在查询和检索这些属性。

WebDAV 的做法是将属性存储在文件主体之外,可以在不获取整个主体的情况下进行查询,在不更改主体的情况下进行更新。

一些属性是特定于 webdav 的。它们是出于需要而创建的。例如:Resourcetype 属性。它的创建是为了询问您是要使用特殊的集合资源还是集合中包含的普通 Web 资源。

请记住,GET(类似于 HTTP)获取资源,PUT 修改资源,DELETE 删除资源。

HTTP 的局限性

要了解 webdav,您必须了解 HTTP 的局限性。

  1. 它是无状态的,迫使用户从头开始构建搜索。
  2. 您不能说对特定集合中的所有资源都这样做。
  3. 它是只读的,不提供创作所需的协作功能。
  4. 它不支持多资源操作。为了支持这一点,创建了 depth header,这样您就可以判断它是否需要在所有资源上工作。

WebDAV 资源模型

  +--------+    +--------------+
|Resource|... |Property |
+--------+ +--------------+
+------++------+
|Webdav||custom|
+------++------+

+-----------+
|Dav root: /|......
+-----------+ | +--------+
|.....|Resource|
| +--------+
| +----------+
|.....|Collection|..... +----------+
' +----------+ |...|Collection|
| +----------+
| +--------+
|....|Resource|
+--------+

关于php - PHP 中的 CardDAV 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com