我正在与一位开发人员争论,需要一些外部视角。 定义REST Api时,通常将什么作为输入参数?
假设我们有以下调用GetCarByModelName,您是否希望它接受一个输入,即ModelName(字符串,枚举,任何东西)或整个Car对象,其中ModelName位于字段中,然后内部函数会查看ModelName并忽略所有其他信息(如果提供的话)?
SAMEORIGIN
答案 0 :(得分:0)
首先让我们解决一些问题-HTTP GET并发送JSON正文(这似乎是您打算做的事情)。
但是,GET的服务器语义受到限制,使得主体(如果 任何,对请求没有语义含义。 ....所以,可以 用GET发送正文,否,这样做永远没有用。
在您提到的问题中:
其中ModelName在字段中,然后在内部工作 该函数将查看ModelName并忽略所有其他 信息是否提供了?
通常,无论一个字段或多个字段,您都不应发送带有主体的HTTP GET(因此您可能会说自己都错了)。
GetCarByModelName显然具有HTTP GET请求的语义。 在常见的REST api中,有人会期望您拥有Car资源,可以通过模型名称查询该资源。但是,让我们给出一些背景信息-一辆汽车在汽车经销商商店中,用户希望获得BMW X5车型的列表。看起来应该像这样:
HTTP GET /api/cardealer/{carDealerId}/cars?modelName=BMW%20X5