gpt4 book ai didi

REST API - 需要关于架构的意见

转载 作者:行者123 更新时间:2023-12-02 07:49:22 24 4
gpt4 key购买 nike

我正在设计一个 REST API。我现在正在处理的部分涉及简单地从服务器读取 JSON 数据形式的对象并修改它们。

我正在考虑为此使用的资源如下所示:/data/{表名}/{行键}

我想允许对该资源执行GETPUT 操作。

我正在努力解决的问题是,我想将其他数据与 JSON 对象一起返回,例如客户消息、往返数据库所花费的时间等……我会还希望允许在 URL 太长的情况下使用负载发送查询参数。


所以资源会像这样工作:

获取

GET /data/{table name}/{row key}

服务器返回:

{
data:{...JSON OBJECT GOES HERE ....},
message:"customer messages go here",
responseTime:'123ms',
otherInfo:"Yada yada yada;
}

放置

PUT GET /data/{table name}/{row key}

客户端作为负载发送:

{
data:{...JSON object goes here...},
queryArguments:{...extra long query arguments go here...}
}

恐怕这可能会违反正确的 RESTful GETPUT 资源的规则,因为您发送到服务器的内容并不完全是您返回的内容因为其他信息被包含在有效载荷中。我宁愿不让每个操作都是 POST 作为补救措施。

我是不是太执着了?我应该用其他方式来构建它吗?

谢谢!

编辑::::

我应该注意到,在资源中:/data/{table name}/{row key},为简单起见,我使用了“table name”和“row key”。这适用于 noSQL 数据库。此资源旨在以类似于 Amazon S3 的方式工作。 “uuid”实际上是比“行键”更好的描述。

最佳答案

对我来说,这取决于如何使用附加信息。对于我的客户来说,responseTime 不是问题(或者至少我是这么认为的 :),他们只需要那个响应。对于作为开发人员的我来说,它可以帮助调试。因此,当客户给我缓慢的请求时,我可以轻松地对其进行测试,而额外的信息可能会有所帮助。在这里我的意思是可以创建一个简单的 url 作为你指定的/data/{table name}/{row key} 并根据该请求发送响应,你可以再创建一个 url/data/{table name}/{row key}/debug 或其他任何获取相同数据的附加信息,如“reponseTime”。只是一个想法;)

更新: 是的,忘记了:不要将表名用作 url 的一部分,至少要修改它的名称。我不想告诉任何人我的表是如何调用的,如果有人要入侵我的数据库并注入(inject)额外的代码,我希望她花更多时间寻找任何信息,而不是在盘子上提供她的信息 :)

关于REST API - 需要关于架构的意见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635828/

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