我有一个资源(示例狗)并暴露了端点
/ v1 / dogs& / v1 / dogs / {dogId} - GET
我的狗收集在mongodb中,dogIds是mongoIds(ObjectId)。
如果为/ v1 / dogs / 55243b709f6f672314103bb1发送请求 - 我得到200 ok
如果使用不是mongoId ex(/ v1 / dogs / 12342222)的ID发送相同的请求
我是否回应格式异常或404 NotFound异常?
我在想404.让我知道。
答案 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));