我正在AWS API网关中构建一个API,它有一个get方法(id为查询参数),调用lambda函数,然后从dynamodb获取数据。
如果在dynamodb中不存在传递的id,则dynamodb返回一个空的json。我可以检查json的长度来确定结果集是空的。我可以返回一条消息,表明找不到该ID。
现在Get,lambda函数和dynamodb GetItem都成功了。只是没有返回数据。
Get方法响应代码应该是200还是其他4xx代码,以表明输入不正确?
答案 0 :(得分:1)
有一些解释空间,特别是当人们有时设计他们的API以使用http://example.com/find/someID
等URL路径查询时。在这种情况下,someID
可以被视为服务器上未找到的资源,返回404是有意义的。在您的情况下,假设您的网址看起来像http://example.com/find?query=someID
,我认为404不合适。很难区分合法找不到正确资源的资源/find
,但是查询没有结果。在这种情况下返回200
对我来说更有意义,因为请求实际上并不是错误。
在不知道如何使用API的情况下,很难确定,但我怀疑如果您区分错误和零结果,用户会更容易。想象一下,例如,如果你搜索了一些它找不到的东西,可以使用像Google这样的东西并获得404。
最重要的是,或者当然,要记录好并保持一致。