HookGet English להתחיל בחינם

עיבוד מקדים של תוכן האירוע לכל יעד

שש פעולות הצהרתיות שמשנות את צורת המסירה לפני החתימה, ולמה אנחנו אף פעם לא מריצים JavaScript של לקוחות.

בקצרה

  • עיבוד מקדים הוא רשימה מסודרת של צעדים שמוגדרת על היעד (endpoint). כל צעד הוא פעולה אחת.
  • שש פעולות: pick, omit, rename, set, unwrap, wrap. נתיבים מופרדים בנקודות.
  • העיבוד רץ לפני החתימה, כך שהחתימה תמיד מכסה את הבתים שמגיעים בפועל.
  • אם העיבוד המקדים נכשל, המסירה עוברת לתור הכשלים (DLQ). הגוף לעולם לא נמסר בלי העיבוד.

בשביל מה זה טוב

שלושה מקרים מכסים כמעט כל שימוש אמיתי. הראשון: להסיר שדה שיעד מסוים לא אמור לראות, למשל כתובת מייל של לקוח שנשלחת למערכת צד שלישי שאין לה סיבה להחזיק אותה. השני: לשטח את המעטפת שלנו בשביל מקבל שמצפה לצורה משלו, ולא מוכן לשנות את הקוד שלו רק כי הספק החליף מבנה. השלישי: לתייג מסירות בשדה קבוע, כדי שהצרכן יוכל לנתב אותן בלי לנחש מאיפה הן הגיעו.

שלושת המקרים האלה מבניים. אף אחד מהם לא צריך קוד. לכן העיבוד המקדים בנוי כרשימת פעולות ולא כסקריפט, וכך הוא נשאר צפוי, בטוח וקל לקריאה בלוח הבקרה.

שש הפעולות

פעולהמה היא עושה
{"omit": ["data.customer.email"]}מסירה נתיבים. נתיב שלא קיים פשוט לא משנה כלום, וזו לא שגיאה
{"pick": ["type", "data.order.id"]}משאירה רק את הנתיבים שצוינו, והגוף נבנה מחדש מהם
{"rename": {"data": "payload"}}מעבירה ערך לנתיב חדש
{"set": {"source": "hookget"}}כותבת ערכים קבועים (מחרוזת, מספר, בוליאני, null) בנתיבים
{"unwrap": "data"}הערך שבנתיב הופך לגוף כולו
{"wrap": "event"}הגוף כולו נעטף תחת המפתח הזה

איך מגדירים

ביצירת היעד, או בבקשת PATCH. הערך null מנקה את העיבוד המקדים, והמסירות חוזרות לשלוח את הגוף בדיוק כפי שפורסם:

curl -X PATCH https://api.hookget.com/v1/endpoints/ep_…   -H "authorization: Bearer $HOOKGET_KEY"   -d '{"transformation":[{"omit":["data.card"]},{"set":{"via":"hookget"}}]}'

התאמה למקבל עם פורמט קבוע

כשהמקבל רוצה גוף משלו ולא את המעטפת שלנו, משלבים unwrap, pick ו-set:

[
  {"unwrap": "data"},
  {"pick": ["order.id", "order.total"]},
  {"set": {"source": "hookget"}}
]

התוצאה שנמסרת היא {"order":{"id":…,"total":…},"source":"hookget"}, והחתימה מחושבת בדיוק על הבתים האלה. לכן אימות החתימה בצד המקבל עובד בלי שום שינוי: הוא מאמת את מה שהגיע אליו, לא את מה שפורסם במקור.

הכללים ששומרים על העיבוד בטוח

  • אף פעם לא קוד. Svix ו-Hookdeck מריצים JavaScript של לקוחות, ואנחנו בחרנו שלא. כשתהליך מסירה מריץ קוד של לקוח, טווח הנזק שלו הוא התעבורה של כל שאר הלקוחות. שש פעולות מבניות מכסות את המקרים האמיתיים, ואין בהן ארגז חול שאפשר לברוח ממנו.
  • כשל דטרמיניסטי לא מקבל ניסיון חוזר. השגיאה היחידה שיכולה לקרות בזמן ריצה היא unwrap של נתיב שלא קיים. אותו קלט ייכשל באותה צורה בכל פעם, ולכן המסירה עוברת מיד לתור הכשלים עם transformation_failed, במקום לשרוף את כל לוח הניסיונות החוזרים.
  • אף פעם לא הגוף המקורי. אם העיבוד המקדים נכשל, שום דבר לא נמסר. ייתכן שה-omit קיים בדיוק כדי להסיר שדה שאסור לו להגיע ליעד הזה, ולכן מסירת הגוף המקורי אחרי כשל הייתה דליפת מידע.

אם באמת צריך לוגיקה, כמו תנאים, חישובים או שליפת נתונים, עשו אותה אצל המפרסם לפני שהאירוע נכנס לצינור. שם זה הקוד שלכם, בתנאים שלכם. אם JavaScript לכל יעד הוא דרישה אצלכם, בהשוואה מופיע מי מציע אותו.

שאלות

מה זה עיבוד מקדים של וובהוק?

רשימה מסודרת של פעולות שמוגדרת על יעד מסוים ומשנה את צורת תוכן האירוע לפני שהוא נחתם ונמסר. כל יעד יכול לקבל צורה אחרת של אותו אירוע, בלי לשנות את מה שפורסם ובלי לגעת ביעדים האחרים.

האם החתימה עדיין תקפה אחרי עיבוד מקדים?

כן. העיבוד רץ לפני החתימה, והחתימה מחושבת על הבתים שיוצאים בפועל. הצד המקבל מאמת בדיוק את מה שהגיע אליו, עם אותה פונקציית אימות שהוא משתמש בה בכל מקרה.

מה קורה כשהעיבוד המקדים נכשל?

המסירה עוברת מיד לתור הכשלים עם transformation_failed, בלי ניסיונות חוזרים, כי אותו קלט ייכשל שוב באותה צורה. הגוף המקורי לא נמסר, כי ייתכן שהעיבוד נועד בדיוק להסיר ממנו שדה רגיש.

איך מבטלים עיבוד מקדים על יעד?

שולחים PATCH ליעד עם null בשדה transformation. מאותו רגע המסירות חוזרות לשאת את הגוף בדיוק כפי שפורסם.

למה אי אפשר לכתוב JavaScript לכל יעד?

כי תהליך מסירה שמריץ קוד של לקוח חושף את התעבורה של כל שאר הלקוחות לכל באג או ניצול באותו קוד. לוגיקה אמיתית, כמו תנאים וחישובים, שייכת למפרסם, לפני שהאירוע נכנס לצינור.

להתחיל למסור וובהוקים היום

מפנים את הוובהוקים ל-HookGet ורואים את המסירה הראשונה מגיעה, חתומה, תוך פחות מדקה.

פתיחת חשבון חינם לנסות את בודק הוובהוקים החינמי

10,000 מסירות בחודש בחינם, בלי כרטיס אשראי. המסלול החינמי חוסם ולא מחייב, כך שניסיון לא יכול להסתיים בחשבונית.