Skip to content

使用postman调试Appwrite的API接口

API的url格式

bash
http://localhost/v1/databases/{{DATABASE_ID}}/collections/{{USER_COLLECTION_ID}}/documents
# 示例
http://localhost/v1/databases/668161b0000dd3247315/collections/668161be0012a9b9df13/documents

为什么最后的地址是documents,因为它表示一条记录,而collection则表示是数据库表

假如在本地开发,则接口地址是localhost,如果是注册的Appwrite,则需要改为其服务器地址,比如 https://cloud.appwrite.io/

每个链接都需要的请求头:

bash
X-Appwrite-Project:{{PROJECT_ID}}
# 如:667e0fb0000845edcdd8

X-Appwrite-Key:{{API_KEY}}
# 如:
a19708d4b67f2fe8f5e3307d0bea4d7c1b8cf2693f598cc4a91e17be6adfefa9fdf97b67aa14a7fcd29243db78701c6c15a17fb6c3265cb1eec8d6815a08f27ac73d8523db6e4b590e8055c2f0d2185574df318fc2710250ccba44df4fa5c59534b2e76394b4f2e783044057593380b3b01cd414c5e58bec8f06c52607b7fce0

注意:

前者,PROJECT_ID,可以在当前项目中复制

image-20240630225822944

后者,API_KEY,需要在该项目中生成:

image-20240630225919953

post请求(Create)

新建一个post请求,raw-json:

json
{
  "documentId": "unique()",
  "data": {
    "name": "John Doe2",
    "age": 20,
    "sex":"0"
  }
}

以上写法基本固定,字段来自于该表下的collection字段。

字段也是在自己设计数据库时创建的。

get请求(Read)

get请求除了那2个必须的请求头外,无序任何参数。

比如直接将上面的post请求改为get请求,即可获取到所有的用户数据:

bash
http://localhost/v1/databases/{{DATABASE_ID}}/collections/{{USER_COLLECTION_ID}}/documents

返回所有的用户数据。

单个用户:

bash
http://localhost/v1/databases/{{DATABASE_ID}}/collections/{{USER_COLLECTION_ID}}/documents/{{documents_id}}

返回该用户的数据。

patch请求(不支持put请求)(Update)

作用:更新单个用户的数据:

url:

bash
http://localhost/v1/databases/{{DATABASE_ID}}/collections/{{USER_COLLECTION_ID}}/documents/{{documents_id}}

data:

json
{
  "data": {
    "name": "John-upde",
    "age": 20,
    "sex":"0"
  }
}

返回被更新后的数据。

delete请求

作用:删除指定用户的数据:

url:

bash
http://localhost/v1/databases/{{DATABASE_ID}}/collections/{{USER_COLLECTION_ID}}/documents/{{documents_id}}

入参:无

返回值:无

The server successfully processed the request, but is not returning any content.

遇到的问题

在请求时,遇到过个问题:

1、没有权限

我的原因是因为在headers中的一个参数PROJECT_ID没有获取对,因为我在postman里,新建的PROJECT_ID是变量,该变量的值是需要initcurrent都要有值。

2、提示database没有找到

这是因为我的url地址不正确,漏了database_id。也就是我写成的如下地址:

bash
http://localhost/v1/database/collections/{{USER_COLLECTION_ID}}/documents

正确的应该是:

bash
http://localhost/v1/databases/{{DATABASE_ID}}/collections/{{USER_COLLECTION_ID}}/documents

参考的解决资料链接:https://appwrite.io/threads/1137978952976183296

3、在post一条记录时,提示 "message": "Param \"documentId\" is not optional.",

这是因为在创建一条记录(documents)时,需要生成该条记录的id。

解决方式,就是在post的数据中新增一个入参:

json
{
  "documentId": "unique()",  //这个是新增的
  "data": {
    "name": "John Doe2",
    "age": 20,
    "sex":"0"
  }
}

与supabase的区别

从目前来看,supabase更好用,因为数据库设计更加人性化,且支持可视化和SQL生成。

与strapi的区别

因为strapi是headless CMS,看起来不太容易上手,但是只要你知道如何使用,那么它更好用,更适合前端使用或不太复杂的web应用,因为也有非常灵活的可视化字段设计,而且能提供可视化的数据库关联字段等。

所以做不太复杂,适合国情的还是选择strapi了。

strapi v5马上就要发布,精简了API设计,省去了一些不必要的属性嵌套。

更加符合我们的使用习惯。我已经出了strap v5的使用教程,请移步到该目录查看。

后续我会考虑录制strapi v5视频,帮助更多的人上手。

前端三评为个人技术博客,你可与我联系(v:imqdcnn),未经许可禁止任何形式的转载