设计RESTful API时,如果只有特定参数与GET请求相关,应该怎么做?应该将参数传递为查询字符串吗?如果是这样,那么当没有指定或格式不正确时该怎么办?
例如,假设我有一个Post资源,可以通过`api/posts`端点访问。每个帖子都有地理位置,并且仅在指定帖子可能驻留的区域时才能检索到帖子。因此,需要3个参数:纬度、经度和半径。
在这种情况下,我可以想到两个选项: 1. 将参数放在查询字符串中:
2. 将参数放在URL中:
PS. 我知道已经有很多关于这个主题的讨论了(例如:REST API最佳实践:放置参数的位置?),但我的问题专门针对必需参数的情况。
例如,假设我有一个Post资源,可以通过`api/posts`端点访问。每个帖子都有地理位置,并且仅在指定帖子可能驻留的区域时才能检索到帖子。因此,需要3个参数:纬度、经度和半径。
在这种情况下,我可以想到两个选项: 1. 将参数放在查询字符串中:
api/posts/?lat=5.54158&lng=71.5486&radius=10
2. 将参数放在URL中:
api/posts/lat/5.54158/lng/71.5486/radius/10
这其中哪一个才是正确的做法?在查询字符串中放置必需的参数似乎是错误的,但后一种方法感觉有些“丑陋”。PS. 我知道已经有很多关于这个主题的讨论了(例如:REST API最佳实践:放置参数的位置?),但我的问题专门针对必需参数的情况。