提问人:Shamsuddeen Omacy 提问时间:9/18/2023 更新时间:9/18/2023 访问量:40
API 错误处理在 postman 中有效,但客户端引发异常
API Error handling works in postman but client throws exception
问:
如果尝试使用 Postman,我的 API 的错误处理会发送漂亮、清晰且易于理解的消息。但是在与我的客户端应用程序集成(我使用 PHP)时,它总是抛出异常。
实用程序错误响应
class ErrorResponse extends Error {
constructor(message, statusCode) {
super(message);
this.statusCode = statusCode;
Error.captureStackTrace(this, this.constructor);
}
}
module.exports = ErrorResponse;
错误中间件
const ErrorResponse = require('../Utils/errorResponse');
const errorHandler = (err, req, res, next) => {
let error = {
...err
};
error.message = err.message;
// Log to console for dev
console.log(err);
// console.log(err.response.data);
// Mongoose bad ObjectId
if (err.name === 'CastError') {
const message = `Resource not found`;
error = new ErrorResponse(message, 404);
}
// Mongoose duplicate key
if (err.code === 11000) {
const message = 'Duplicate field value entered';
error = new ErrorResponse(message, 400);
}
// Mongoose validation error
if (err.name === 'ValidationError') {
const message = Object.values(err.errors).map(val => val.message);
error = new ErrorResponse(message, 400);
}
res.status(error.statusCode || 500).json({
"status": "error",
"message": error.message || 'Server Error'
});
};
module.exports = errorHandler;
例:
return next(new ErrorResponse('Invalid credentials', 401));
我正在使用 Guzzle,使用 try-catch,但响应不干净。
try {
} catch (GuzzleHttp\Exception\ClientException $e) {
return $e->getResponse();
}
答: 暂无答案
评论
throw
try/catch
POST http://localhost:3000/v2/transfers/name-enquiry
400 Bad Request
'http_errors' => false