我正在开发一个安卓/iOS应用程序,它的相对BackEnd是用Java开发的,使用Quarkus框架和mongoDB作为数据库。具体来说,我正在使用JAX使用RESTful网络服务开发后端。
我想记录与后端的所有交互,例如,应该收集mongoDB中的以下记录,以便进行POST调用:
即:
方法:"POST“
路径:"/shop/getShopbyID“
地址:"91.42.56.67“
主机:"www.example.com“
userAgent:"Mozilla/5.0 (WindowsNT10.0;Win64;x64) AppleWebKit/537.36 (KHTML,类似壁虎) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53“
body:“{”id“:”613f27459d26bf2e7a9f0a1b“}
我不是专家,所以我希望有收集这类数据的最佳做法。你能给我一些建议吗?谢谢
发布于 2021-11-22 05:52:05
这是一个非常广泛的问题,但是MongoDB作为文档存储可以很容易地处理您调用的案件。我想你的文件最后可能会.
{
_id: ObjectId('1234567890'), // You always get a _id in a Mongo document
method: "POST",
path: "/shop/getShopbyID",
address: "91.42.56.67",
host: "www.example.com",
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53",
body: "{\"id\":\"613f27459d26bf2e7a9f0a1b\"}", // Things can get funky here, is your content-type _always_ JSON?
createdAt: ISODate("2017-04-27T04:26:42.709Z") // You probably want a timestamp
}不过,你还是有选择的。你确定要储存身体吗?你确定身体总是JSON吗?即使这是真的,也会是“永远”吗?
如果它总是JSON,那么不要做任何其他的事情。没有什么可以阻止您将其作为一个直接的子文档存储在body中。
{
_id: ObjectId('1234567890'), // You always get a _id in a Mongo document
method: "POST",
path: "/shop/getShopbyID",
address: "91.42.56.67",
host: "www.example.com",
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53",
body: {
id: "613f27459d26bf2e7a9f0a1b"
},
createdAt: ISODate("2017-04-27T04:26:42.709Z") // You probably want a timestamp
}我也不确定如果您部署到在应用服务器前面放置代理之类的任何网络,您是否会得到"path“、"host”、"userAgent",尤其是"address“。如果代理没有传递这些东西,那么您最终得到的是来自代理的东西,而不是来自实际客户的东西。我想这是次要的话题。
底线是MongoDB,因为文档数据存储对非结构化数据做得很好。如果结构不一致,但是只是存储内容,那么查询body的内容会变得有点棘手吗?这是最简单的部分。
https://stackoverflow.com/questions/70055132
复制相似问题