البرمجية الوسيطة Request ID
تولّد وسيطة معرف الطلب (Request ID Middleware) معرفًا فريدًا لكل طلب، يمكنك استخدامه في معالجاتك.
Node.js: تستخدم هذه البرمجية الوسيطة crypto.randomUUID() لتوليد المعرّفات (IDs). أما العام crypto تم تقديمه في Node.js الإصدار 20 أو أحدث. لذلك، قد تحدث أخطاء في الإصدارات الأقدم من ذلك. في هذه الحالة، يرجى تحديد generator. ومع ذلك، إذا كنت تستخدم مُهايئ Node.js، فإنه يضبط تلقائيًا crypto عالميًا، لذا هذا ليس ضروريًا.
Import
import { Hono } from 'hono'
import { requestId } from 'hono/request-id'
الاستخدام
يمكنك الوصول إلى معرّف الطلب (Request ID) عبر requestId متغير داخل المعالجات والوسائط التي تُطبَّق عليها وسيطة معرف الطلب (Request ID Middleware).
const app = new Hono()
app.use('*', requestId())
app.get('/', (c) => {
return c.text(`Your request id is ${c.get('requestId')}`)
})
إذا أردت تحديد النوع صراحةً، فاستورد RequestIdVariables ومرّرها في الأنواع العامة (generics) الخاصة بـ new Hono().
import type { RequestIdVariables } from 'hono/request-id'
const app = new Hono<{
Variables: RequestIdVariables
}>()
تعيين معرّف الطلب
تعيّن معرّف طلب مخصّصًا في الترويسة (الافتراضي: X-Request-Id)، سيستخدم الوسيط (middleware) تلك القيمة بدلًا من توليد قيمة جديدة:
const app = new Hono()
app.use('*', requestId())
app.get('/', (c) => {
return c.text(`${c.get('requestId')}`)
})
const res = await app.request('/', {
headers: {
'X-Request-Id': 'your-custom-id',
},
})
console.log(await res.text()) // your-custom-id
إذا كنت تريد تعطيل هذه الميزة، اضبط headerName خيار إلى سلسلة نصية فارغة.
الخيارات
limitLength: number
الحد الأقصى لطول معرّف الطلب. الافتراضي هو 255.
headerName: string
اسم الترويسة (header) المستخدَم لمعرّف الطلب (request ID). الافتراضي هو X-Request-Id.
generator: (c: Context) => string
دالة توليد معرّف الطلب (request ID). افتراضياً، تستخدم crypto.randomUUID().
معرّفات الطلبات الخاصة بكل منصة
بعض المنصات (مثل AWS Lambda) تولّد بالفعل معرفات الطلبات الخاصة بها لكل طلب. بدون أي إعداد إضافي، لا تدرك هذه الوسيطة معرفات الطلبات المحددة هذه وتولّد معرف طلب جديدًا. قد يؤدي هذا إلى الارتباك عند الاطلاع على سجلات تطبيقك.
توحيد هذه المعرّفات، استخدم generator دالة لالتقاط معرف الطلب الخاص بالمنصة واستخدامه في هذه الوسيطة.
روابط خاصة بالمنصّة
- AWS Lambda
- Cloudflare
- Deno
- Fastly