id: restful-url-pattern name: RESTful URL设计规则 description: 验证API URL是否符合RESTful设计规范 category: APIDesign version: 1.0.0 severity: warning is_enabled: true tags: - restful - api-design - url-pattern target_type: APIRequest lifecycle: RequestPreparation scope: RequestURL design_aspect: URL设计 pattern: "^/api/v\\d+/[a-z0-9-]+(/[a-z0-9-]+)*$" code: | import re def validate(context): request = context.get('api_request') if not request: return {'is_valid': False, 'message': '缺少API请求对象'} url = str(request.url) # 解析URL,获取路径部分 from urllib.parse import urlparse parsed_url = urlparse(url) path = parsed_url.path # 使用正则表达式验证路径 pattern = context.get('pattern', "^/api/v\\d+/[a-z0-9-]+(/[a-z0-9-]+)*$") if not re.match(pattern, path): return { 'is_valid': False, 'message': 'API URL不符合RESTful设计规范', 'details': { 'current_path': path, 'expected_pattern': pattern, 'suggestion': '路径应该遵循 /api/v{version}/{资源}[/{id}] 格式' } } return { 'is_valid': True, 'message': 'API URL符合RESTful设计规范', 'details': { 'path': path } }