为 firebase Kotlin 的帖子请求设置子名称

问题描述 投票:0回答:1

如何为 Firebase 实时数据库的发布请求设置我的孩子名。我使用 ktor 2.3.9,我可以发出 post 请求,但是当我这样做时,发送的信息会破坏 firebase Json,并且我无法使用此 json 文件中的数据。 ApiRoutes.SEARCH_USER 我的数据库的链接。 User 是可序列化的数据类。它包含登录名、名字、姓氏、父名和密码。

这是我的第一个版本发布请求发布请求。

suspend fun postUser(
    id:Int,
    login: String,
    firstname: String,
    lastname: String,
    patronymic: String,
    passwordNewUser: String
) {

    client.post(ApiRoutes.SEARCH_USER) {
        contentType(ContentType.Application.Json)
        setBody(User(login, firstname, lastname, patronymic, passwordNewUser))
    }
}

在我找到这个版本之前,但是这个版本不能解决我的问题,但是这个 make suctur 是我想要的。

suspend fun postUser(
    id:Int,
    login: String,
    firstname: String,
    lastname: String,
    patronymic: String,
    passwordNewUser: String
){

    client.post(ApiRoutes.SEARCH_USER)
    {
        val file = User(login, lastname, firstname, patronymic, passwordNewUser)
        contentType(ContentType.Application.Json)
        var jsonchik = Json.encodeToJsonElement(mapOf("${id}" to file))
        headers{
            append(HttpHeaders.PublicKeyPins, "${id}")
        }
        setBody(jsonchik)
    }
}

我如何理解附加可以解决我的问题,但我找不到需要的附加

android firebase firebase-realtime-database ktor ktor-client
1个回答
0
投票

由于您正在调用 Firebase 实时数据库的 REST API,因此

POST
请求将始终使用服务器上生成的 ID 创建一个新子级。

如果您想自己指定密钥,则应使用

PUT
(而不是
POST
)。下面是一个基于 Firebase 文档的 如何使用
PUT
的示例:

curl -X PUT -d '{
  "name": "Alan Turing",
  "birthday": "June 23, 1912"
}' 'https://docs-examples.firebaseio.com/fireblog/users/alanisawesome.json'

alanisawesome
节点写入
fireblog/users
下。

使用

POST
时的等效项是:

curl -X POST -d '{
  "name": "Alan Turing",
  "birthday": "June 23, 1912"
}' 'https://docs-examples.firebaseio.com/fireblog/users.json'

但是使用

POST
Firebase 将为服务器上的新子节点生成唯一 ID,而使用
PUT
我们指定要写入的节点的示例名称(和完整路径)。

© www.soinside.com 2019 - 2024. All rights reserved.