Web API异常处理是指在API开发中捕获、记录和适当响应各种错误情况的过程。良好的异常处理能提高API的可靠性和用户体验。
// Express.js示例
app.use((err, req, res, next) => {
console.error(err.stack);
const statusCode = err.statusCode || 500;
const message = statusCode === 500 ? 'Internal Server Error' : err.message;
res.status(statusCode).json({
error: {
status: statusCode,
message: message,
timestamp: new Date().toISOString(),
path: req.path
}
});
});
# Python Flask示例
class APIError(Exception):
def __init__(self, message, status_code=400, payload=None):
super().__init__()
self.message = message
self.status_code = status_code
self.payload = payload
def to_dict(self):
rv = dict(self.payload or ())
rv['message'] = self.message
rv['status_code'] = self.status_code
return rv
@app.errorhandler(APIError)
def handle_api_error(error):
response = jsonify(error.to_dict())
response.status_code = error.status_code
return response
// Spring Boot示例
@PostMapping("/users")
public ResponseEntity<User> createUser(@Valid @RequestBody User user) {
// 如果输入验证失败会自动抛出MethodArgumentNotValidException
return ResponseEntity.ok(userService.create(user));
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<ErrorResponse> handleValidationExceptions(MethodArgumentNotValidException ex) {
List<String> errors = ex.getBindingResult()
.getFieldErrors()
.stream()
.map(FieldError::getDefaultMessage)
.collect(Collectors.toList());
return ResponseEntity.badRequest().body(new ErrorResponse("Validation failed", errors));
}
通过实施这些策略和实践,可以构建出健壮、用户友好的Web API异常处理系统。