放置在REST调用的输入参数中的内容

时间:2019-02-25 06:16:27

标签: rest http api-design

我正在与一位开发人员争论,需要一些外部视角。 定义REST Api时,通常将什么作为输入参数?

假设我们有以下调用GetCarByModelName,您是否希望它接受一个输入,即ModelName(字符串,枚举,任何东西)或整个Car对象,其中ModelName位于字段中,然后内部函数会查看ModelName并忽略所有其他信息(如果提供的话)?

SAMEORIGIN

1 个答案:

答案 0 :(得分:0)

首先让我们解决一些问题-HTTP GET并发送JSON正文(这似乎是您打算做的事情)。

REST的author评论了here

  

但是,GET的服务器语义受到限制,使得主体(如果   任何,对请求没有语义含义。 ....所以,可以   用GET发送正文,否,这样做永远没有用。

在您提到的问题中:

  

其中ModelName在字段中,然后在内部工作   该函数将查看ModelName并忽略所有其他   信息是否提供了?

通常,无论一个字段或多个字段,您都不应发送带有主体的HTTP GET(因此您可能会说自己都错了)。

GetCarByModelName显然具有HTTP GET请求的语义。 在常见的REST api中,有人会期望您拥有Car资源,可以通过模型名称查询该资源。但是,让我们给出一些背景信息-一辆汽车在汽车经销商商店中,用户希望获得BMW X5车型的列表。看起来应该像这样:

HTTP GET /api/cardealer/{carDealerId}/cars?modelName=BMW%20X5