REST错误和Mongo ID

时间:2015-08-11 15:10:08

标签: mongodb rest

我有一个资源(示例狗)并暴露了端点

/ v1 / dogs& / v1 / dogs / {dogId} - GET

我的狗收集在mongodb中,dogIds是mongoIds(ObjectId)。

如果为/ v1 / dogs / 55243b709f6f672314103bb1发送请求 - 我得到200 ok

如果使用不是mongoId ex(/ v1 / dogs / 12342222)的ID发送相同的请求

我是否回应格式异常或404 NotFound异常?

我在想404.让我知道。

2 个答案:

答案 0 :(得分:0)

恕我直言......是404或者您可以抛出400 Bad Request,因为您的示例中的ID将无法通过验证检查长度。所以这取决于。如果你在转到数据库之前发现错误,那么它就是一个400错误的请求。但是,如果您将请求发送到数据库并进行查找但是空白,那么它就是404找不到。

答案 1 :(得分:0)

请求有效 - 因为它符合架构(/v1/dogs/<<_id>>) - 因此是错误请求(400 Bad Request)。

仅凭这个原因,我会发回404 Not Found

$id = $strIdFromRequest;
try {
  $id = new MongoId($id);
} catch(\MongoException $objException) {
  //Send back a 404
}

//Query Mongo
//If nothing return, respond with a 404
$objCursor = $objMongo->findOne(array("_id" => $id));