REST error and Mongo Id



我有一个资源(例如dogs),并且已经暴露了端点

/v1/狗,/v1/dogs/{dogId}——GET

我的狗集合在mongodb中,狗id是mongoIds(ObjectId)。

如果请求发送到/v1/dogs/55243b709f6f672314103bb1—我得到一个200 ok

如果同一个请求发送的Id不是mongoId ex (/v1/dogs/12342222)

我是否响应格式异常或404未找到异常?

我想404。让我知道。

IMHO....是404或者您可以抛出400 Bad Request,因为您的示例中的ID将无法通过长度验证检查。所以要视情况而定。如果您在访问数据库之前捕获了错误,那么它就是一个400错误的请求。但是,如果您将请求带到DB并进行查找,但出现空,则它是404 not Found.

请求是有效的-因为它符合模式(/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));

最新更新