gpt4 book ai didi

api - 通过ID或RESTful API中的段标识项目

转载 作者:行者123 更新时间:2023-12-03 10:29:39 25 4
gpt4 key购买 nike

我目前正在设计API,但遇到一个小问题:
当您应该能够通过ID或嵌条识别商品时,RESTful API的URL外观如何?

我可以想到三种选择:

GET /items/<id>
GET /items/<slug>

这就要求弹头和ID是可区分的,在这种情况下不必给出。我无法想到一个解决此问题的解决方案,除非您执行以下操作:
GET /items/id/<id>
GET /items/slug/<slug>

这可以很好地工作,但是,这不是我唯一要通过信息块或ID标识项目的地方,并且当一个人想要对其他操作实现相同的方法时,它将很快变得非常难看。它只是不是很可扩展,导致我们采用这种方法:
GET /items?id=<id>
GET /items?slug=<slug>

这似乎是一个很好的解决方案,但我不知道这是否是人们期望的,因此由于使用不当而可能导致令人沮丧的错误。而且,要实现该路由并不是一件容易的事,或者说是干净的事。但是,它很容易扩展,并且看起来与 方法非常相似,用于获取多个项目:
GET /items?ids=<id:1>,<id:2>,<id:3>
GET /items?slugs=<slug:1>,<slug:2>,<slug:3>

但这也有一个弊端:如果某人想标识自己想用ID来获取的某些物品,而其他人则以a来标识呢?混合这些标识符并不是一件容易的事。

对于这些 问题,最佳和最广泛接受的解决方案是什么?
通常,在设计这样的API时有什么要紧的?

最佳答案

在这三个选项中,我更喜欢第三个选项,看到这种语法并不罕见。例如Twitter API的某些部分允许使用以下语法:
https://dev.twitter.com/rest/reference/get/statuses/show/id

第四种选择是一种混合方法,您可以选择一种(例如ID)作为单个项目的典型访问方法,但也允许根据段进行查询。例如。:

GET /items/<id>
GET /items?slug=<slug>
GET /items?id=<id>

您的路由将明显将/ items / id映射到/ items?id =

可扩展为多个id /段,但仍满足将URI与基础数据模型匹配的REST范例。

关于api - 通过ID或RESTful API中的段标识项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10018100/

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