在Swift中,我可以使用Firebase API执行以下操作,以获取Firebase生成的新ID:
let newListingRef = self.ref!.child("listings").child(location).childByAutoId()
let newBookId = newListingRef.key
然后我使用此ID为我上传到Firebase存储的图片创建文件名。
我正在尝试使用REST API执行相同操作,我知道如何使用POST请求将数据上传到给定位置,但有没有办法使用REST API复制上述行为?
更新:
let location = locationTextField.Text
let url = "https://proj_id.firebaseio.com/listings/"
let random = "grjirjgrirj"
let postfix = ".json"
let slash = "/"
let strings = [url;location;slash;random;postfix]
let url = System.String.Concat(strings)
let req = WebRequest.Create(Uri(url))
req.Method <- "POST"
req.ContentLength <- int64(0)
req.ContentType <- "application/json; charset=utf-8"
let reqStream = req.GetRequestStream()
reqStream.Close()
use resp = req.GetResponse()
use stream = resp.GetResponseStream()
use reader = new IO.StreamReader(stream)
结果URL如下:
https://proj_id.firebaseio.com/listings/London/grjirjgrirj.json
答案 0 :(得分:2)
如果您只想要推送ID(在其他Firebase SDK中更为常见),并且后面没有数据,请在已知不存在的位置使用空对象执行POST:
curl -X POST -d '{}' 'https://your-project.firebaseio.com/definitely/doesnt/exist.json'
它不会对您的数据库进行任何更改,并会在JSON响应中返回一个推送ID,稍后您可以使用它来添加实际数据。