التحقق ومعالجة الأخطاء
تحقق من بيانات الطلبات الواردة وأعد استجابات أخطاء متسقة ومنظمة جيدًا في واجهات API بلا خادم المبنية باستخدام Workers وDeno.
التحقق ومعالجة الأخطاء درس مجاني في Edge Computing with Cloudflare Workers & Deno على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Edge Computing with Cloudflare Workers & Deno، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Edge Computing with Cloudflare Workers & Deno 3 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Why Validate Input?
Never trust client input. A robust API validates every incoming payload before acting on it.
Validation prevents:
- Corrupt data entering your store
- Crashes from missing fields
- Security issues like injection
At the edge, validation also fails fast, saving CPU and downstream calls.
Parsing the Request Body
Most APIs accept JSON. Parse it safely, malformed JSON throws.
async function readJson(request) {
try {
return await request.json();
} catch {
return null;
}
}Manual Field Validation
For simple schemas you can validate by hand.
Check required fields and types before continuing.
function validateUser(body) {
const errors = [];
if (typeof body.name !== 'string') errors.push('name is required');
if (typeof body.age !== 'number') errors.push('age must be a number');
return errors;
}Schema Validation with Zod
For larger APIs, a schema library like Zod (which runs on both Workers and Deno) is cleaner and gives typed output.
import { z } from 'zod';
const UserSchema = z.object({
name: z.string().min(1),
age: z.number().int().positive()
});safeParse for Graceful Errors
Use safeParse so validation never throws, you inspect the result instead.
const result = UserSchema.safeParse(body);
if (!result.success) {
// result.error.issues describes what failed
}Consistent Error Response Shape
Return errors in a predictable JSON shape so clients can parse them reliably.
function errorResponse(message, status, details) {
return new Response(
JSON.stringify({ error: message, details: details || null }),
{ status, headers: { 'Content-Type': 'application/json' } }
);
}Choosing the Right Status Code
Match HTTP status to the failure type:
400Bad Request, invalid body401Unauthorized, missing auth404Not Found422Unprocessable Entity, semantic validation failure500Internal Server Error, unexpected
A try/catch Safety Net
Wrap handlers in try/catch so an unexpected throw becomes a clean 500 instead of a crash.
export default {
async fetch(request, env) {
try {
return await handle(request, env);
} catch (err) {
return errorResponse('Internal Server Error', 500);
}
}
};Validating Query & Path Params
Body is not the only untrusted input, query strings and path params need checks too.
const url = new URL(request.url);
const page = Number(url.searchParams.get('page') || '1');
if (!Number.isInteger(page) || page < 1) {
return errorResponse('Invalid page', 400);
}Avoid Leaking Internal Details
In production, never send stack traces or raw error messages to clients.
Log the full error internally, return a generic message externally.
catch (err) {
console.error(err);
return errorResponse('Something went wrong', 500);
}Best Practices Summary
Solid validation and error handling means:
- Validate body, query, and params
- Use a schema library for complex inputs
- Return a consistent error shape
- Pick correct status codes
- Catch everything and hide internals
Quick Check
Which HTTP status best fits a request whose JSON is well-formed but fails a business validation rule?
Recap
You now validate untrusted input and return clean errors:
- Safely parse bodies and params
- Validate manually or with Zod's
safeParse - Use a consistent error JSON shape and correct status codes
- Wrap handlers in try/catch and hide internal details
Reliable validation is what separates a toy API from a production-grade one.
الأسئلة الشائعة
هل درس «التحقق ومعالجة الأخطاء» مجاني؟
نعم — نص درس «التحقق ومعالجة الأخطاء» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Edge Computing with Cloudflare Workers & Deno، انتقل إلى CoddyKit PRO. تتضمن دورة Edge Computing with Cloudflare Workers & Deno 3 دروس في المجموع.
ماذا ستتعلم في «التحقق ومعالجة الأخطاء»؟
تحقق من بيانات الطلبات الواردة وأعد استجابات أخطاء متسقة ومنظمة جيدًا في واجهات API بلا خادم المبنية باستخدام Workers وDeno. تتمرن على Edge Computing with Cloudflare Workers & Deno مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Edge Computing with Cloudflare Workers & Deno؟
لا تُشترط خبرة سابقة. Edge Computing with Cloudflare Workers & Deno على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «التحقق ومعالجة الأخطاء»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Edge Computing with Cloudflare Workers & Deno هذا؟
نعم. كل درس في Edge Computing with Cloudflare Workers & Deno يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تصميم واجهات RESTful API
- التوجيه والبرمجيات الوسيطة
- التحقق ومعالجة الأخطاء