วิธีจัดรูปแบบ JSON เพื่อการดีบักที่เร็วขึ้น

การตอบสนอง API แบบย่อจะซ่อนข้อผิดพลาดไว้อย่างชัดเจน เรียนรู้ขั้นตอนการทำงานที่ทำซ้ำได้—พิมพ์ได้สวยงาม ตรวจสอบโครงสร้าง ถอดรหัส JWT และทดสอบ regex—โดยใช้เครื่องมือเบราว์เซอร์ที่จะเก็บเพย์โหลดไว้ในเครื่องของคุณ

เมื่อ API ส่งคืนวอลล์ของ JSON ที่ย่อขนาด การดีบักจะช้าลงก่อนที่คุณจะพบจุดบกพร่องจริง คีย์เบลอพร้อมกัน เครื่องหมายจุลภาคหายไปซ่อนอยู่ในสตริงยาว และอาร์เรย์ที่ซ้อนกันกลายเป็นไปไม่ได้ที่จะสแกน การพิมพ์ที่สวยงามไม่ใช่เรื่องสวยงาม แต่เป็นวิธีเปลี่ยนรูปแบบการขนส่งแบบทึบให้กลายเป็นสิ่งที่ดวงตาของคุณสามารถแยกแยะได้ภายในไม่กี่วินาที

คัดลอกการตอบสนองดิบจากแท็บเครือข่ายเบราว์เซอร์ เทอร์มินัล หรือไฟล์บันทึก วางลงในฟอร์แมต JSON บนเครื่องมือไฟฟ้า เลือกระดับการเยื้อง สองช่องว่างสำหรับบันทึกขนาดกะทัดรัด และสี่ช่องว่างเมื่อคุณแชร์ข้อมูลโค้ดในการตรวจสอบโค้ด ตัวจัดรูปแบบจะตรวจสอบความถูกต้องของไวยากรณ์ในขณะที่แสดงผล หากเครื่องหมายจุลภาคต่อท้ายหรือคีย์ที่ไม่มีเครื่องหมายคำพูดทำให้เอกสารเสียหาย คุณจะเห็นตำแหน่งข้อผิดพลาดทันที แทนที่จะคาดเดาว่าบรรทัดใดล้มเหลว

ข้อผิดพลาดในการตรวจสอบความถูกต้องจัดอยู่ในหมวดหมู่ที่สามารถคาดเดาได้บางประการ คำพูดที่ขาดหายไปเพียงคำพูดเดียวมักจะเรียงซ้อนเป็นข้อความที่ทำให้เข้าใจผิดหลายสิบข้อความ แก้ไขปัญหาที่รายงานครั้งแรกและจัดรูปแบบใหม่ ตัวเลขที่จัดเก็บเป็นสตริง - "200" แทนที่จะเป็น 200 - เป็น JSON ที่ถูกต้อง แต่อาจทำให้การเปรียบเทียบที่เข้มงวดในแอปพลิเคชันของคุณขัดข้อง เน้นสิ่งเหล่านั้นในขณะที่อ่านเอาต์พุตที่เยื้อง คีย์ Null และคีย์ที่ขาดมีความสำคัญในจุดสิ้นสุดของ PATCH: JSON ที่จัดรูปแบบทำให้ชัดเจนเมื่อฟิลด์เป็นโมฆะอย่างชัดเจนแทนที่จะหายไป

เมื่อสามารถอ่านเพย์โหลดได้แล้ว ให้แก้ไขจุดบกพร่องอย่างมีกลยุทธ์ แทนที่จะอ่านจากบนลงล่าง ระบุซองจดหมาย: Wrapper HTTP มักจะวางข้อมูลไว้ใต้ข้อมูล ผลลัพธ์ หรือรายการ เปรียบเทียบรูปร่างที่คุณคาดหวัง (อาร์เรย์กับวัตถุ) กับสิ่งที่มาถึง หากเกี่ยวข้องกับการแบ่งหน้า ให้ยืนยันฟิลด์หน้า ผลรวม และเคอร์เซอร์ก่อนที่จะเจาะลึกเข้าไปในแต่ละเรกคอร์ด

จุดบกพร่องในการตรวจสอบความถูกต้องมักเกี่ยวข้องกับโทเค็นการเข้าถึง JWT เมื่อ API ส่งคืน 401 หรือ 403 ให้วางโทเค็นผู้ถือ โดยไม่ต้องใส่คำนำหน้า "ผู้ถือ " หากตัวถอดรหัสคาดหวัง JWT แบบดิบ ลงในเครื่องมือตัวถอดรหัส JWT ตรวจสอบการอ้างสิทธิ์ exp ก่อน: โทเค็นที่หมดอายุจะอธิบายความล้มเหลวอย่างกะทันหันซึ่งปรากฏเป็น "แบบสุ่ม" เนื่องจากนาฬิกาข้ามขอบเขต ตรวจสอบ iss และ audi ว่าบริการของคุณตรวจสอบผู้ออกหรือผู้ชมหรือไม่ ส่วนเพย์โหลดจะแสดงบทบาท รหัสผู้เช่า และการอ้างสิทธิ์แบบกำหนดเองที่แบ็คเอนด์ของคุณอาจอ่านผิดหากประเภทที่แตกต่างกันระหว่างบริการ

ห้ามวางโทเค็นการผลิตลงในถังวางสาธารณะหรือภาพหน้าจอแชทโดยมองเห็นการอ้างสิทธิ์ได้ การถอดรหัสผ่านเบราว์เซอร์บนเครื่องของคุณเองจะเก็บความลับไว้นอกเซิร์ฟเวอร์ของบุคคลที่สาม แต่หน้าจอและคลิปบอร์ดของคุณยังคงมีความสำคัญ ล้างฟิลด์หลังจากการดีบักบนฮาร์ดแวร์ที่ใช้ร่วมกัน

ช่องสตริงมักจะมี JSON ที่ใช้ Escape หรือ base64 blobs หลังจากจัดรูปแบบวัตถุด้านนอกแล้ว ให้คัดลอกสตริงด้านในแล้วจัดรูปแบบอีกครั้ง ข้อผิดพลาดในการเข้ารหัสสองครั้งของ API บางอย่าง: ช่องข้อความเก็บสตริง JSON แทนที่จะเป็นออบเจ็กต์ การพิมพ์แต่ละเลเยอร์อย่างสวยงามจะเผยให้เห็นข้อความยืนยันจริงที่ UI ของคุณควรแสดงให้ผู้ใช้เห็น

เมื่อบันทึกมีข้อความผสมและ JSON ซึ่งพบได้ทั่วไปในการส่งเว็บฮุค ให้ใช้ Regex Tester เพื่อแยกบล็อก JSON ก่อนจัดรูปแบบ รูปแบบเช่น \{[\s\S]*\} ที่มีการยึดอย่างระมัดระวังสามารถแยกวัตถุออกจากส่วนหัวโดยรอบได้ ทดสอบ regex กับบันทึกตัวอย่างที่บันทึกไว้ จากนั้นนำไปใช้กับรายการที่คล้ายกันอย่างสม่ำเสมอ รวมการแยก regex เข้ากับฟอร์แมตเตอร์ เพื่อที่คุณจะได้ไม่ต้องลบคำนำหน้าการประทับเวลาด้วยตนเองทีละบรรทัด

สำหรับงานการถดถอย ให้ย่อขนาด JSON ที่จัดรูปแบบแล้วให้เหลือเพียงบรรทัดเดียว เมื่อคุณต้องการสร้างลำดับไบต์ที่แน่นอนใน curl หรือ Postman JSON Formatter รองรับโหมดย่อขนาดสำหรับการเดินทางไปกลับนั้น จัดเก็บการรับรองทั้งสองรายการไว้ในตั๋วของคุณ: เยื้องไว้สำหรับผู้อ่านที่เป็นมนุษย์ ลดขนาดลงสำหรับขั้นตอนการคัดลอกและวาง

สร้างรายการตรวจสอบส่วนบุคคลสำหรับเหตุการณ์ API ขั้นตอนที่หนึ่ง: จัดรูปแบบและแก้ไขไวยากรณ์ ขั้นตอนที่สอง: แมปฟิลด์กับประเภท OpenAPI หรือ TypeScript ของคุณ ขั้นตอนที่สาม: ถอดรหัส JWT หากเกี่ยวข้องกับการรับรองความถูกต้อง ขั้นตอนที่สี่: regex-extract เพย์โหลดที่ฝังไว้จากบันทึกเมื่อจำเป็น ขั้นตอนที่ห้า: บันทึกชุดย่อยที่ล้มเหลวน้อยที่สุด—ลบสาขาที่ไม่เกี่ยวข้องออกจนกว่าจะเหลือเพียงคีย์ที่เป็นปัญหา

ทีมจะได้รับประโยชน์จากการตกลงเรื่องการเยื้องและแบบแผนการจัดลำดับคีย์ แม้ว่าในทางเทคนิคแล้วออบเจ็กต์ JSON จะไม่มีการเรียงลำดับก็ตาม การจัดรูปแบบที่สอดคล้องกันในคำขอดึงจะช่วยลดสัญญาณรบกวนที่แตกต่างกัน เมื่อตรวจสอบเพย์โหลดของผู้อื่น ขอให้พวกเขาวาง JSON ที่จัดรูปแบบแล้ว แทนที่จะวางภาพหน้าจอ ค้นหาข้อความได้ แต่ค้นหารูปภาพไม่ได้

อาร์เรย์ขนาดใหญ่สมควรได้รับความสนใจเป็นพิเศษ การยุบจิตใจที่ดัชนีศูนย์เป็นเรื่องง่าย จุดบกพร่องที่ดัชนีสี่ร้อยไม่ได้ หลังจากจัดรูปแบบแล้ว ให้ค้นหา ID หรืออีเมลที่ต้องการจากรายงานข้อบกพร่องของคุณ หากฟอร์แมตเตอร์ประสบปัญหากับอินพุตที่วางขนาดใหญ่มาก ให้แยกอาร์เรย์ในตัวแก้ไขของคุณ หรือขอตำแหน่งข้อมูลแบบแบ่งหน้าจากเจ้าของ API

ช่องที่คำนึงถึงความปลอดภัย เช่น รหัสผ่าน โทเค็นการรีเฟรช คีย์ส่วนตัว—บางครั้งปรากฏในดัมพ์การดีบักโดยไม่ตั้งใจ แก้ไขก่อนที่จะแชร์เอาต์พุตที่จัดรูปแบบในตั๋ว แม้กระทั่งเป็นการภายในก็ตาม ฟอร์แมตเตอร์จะไม่ลบข้อมูลลับสำหรับคุณ

ด้วย JSON Formatter สำหรับโครงสร้าง, JWT Decoder สำหรับการอ้างสิทธิ์โทเค็น และ Regex Tester สำหรับการดึง JSON ออกจากบันทึกที่ยุ่งเหยิง คุณจะเปลี่ยนเซสชันการคัดลอกและวางที่บ้าคลั่งให้เป็นไปป์ไลน์ที่สั้นและทำซ้ำได้ ครั้งถัดไปที่การผลิตกลับมา 500 ด้วยตัวกล้องทึบแสง คุณจะใช้เวลาหลายนาทีในการค้นหาสนามที่ละเมิด แทนที่จะใช้เวลาหลายชั่วโมงต่อสู้กับช่องว่าง