เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ
NocoBase มี APIClient ที่พัฒนาต่อยอดมาจาก Axios ซึ่งสามารถใช้ส่ง HTTP request ได้จากที่ใดก็ตามที่คุณสามารถเข้าถึง Context ได้ครับ
ตำแหน่งทั่วไปที่คุณสามารถเข้าถึง Context ได้แก่:
app.contextengine.contextplugin.contextmodel.contextctx.api.request() เป็นเมธอดที่ใช้ส่งคำขอที่พบบ่อยที่สุดครับ พารามิเตอร์และค่าที่ส่งกลับจะเหมือนกับ axios.request() ทุกประการ
การใช้งานพื้นฐาน
คุณสามารถใช้การตั้งค่าการส่งคำขอของ Axios มาตรฐานได้โดยตรงเลยครับ:
ctx.api.axios เป็นอินสแตนซ์ของ AxiosInstance ซึ่งคุณสามารถใช้แก้ไขการตั้งค่าเริ่มต้นแบบ Global หรือเพิ่ม Request Interceptor ได้ครับ
การแก้ไขการตั้งค่าเริ่มต้น
สำหรับการตั้งค่าเพิ่มเติม สามารถดูได้ที่ Axios Default Config ครับ
Interceptor สามารถประมวลผลคำขอก่อนที่จะถูกส่งออกไป หรือประมวลผลการตอบกลับหลังจากที่ได้รับมาแล้วได้ครับ เช่น การเพิ่ม Header ให้กับคำขอทั้งหมด, การแปลงพารามิเตอร์ให้เป็นรูปแบบที่ต้องการ, หรือการแสดงข้อความแจ้งเตือนข้อผิดพลาดแบบรวมศูนย์
ด้านล่างนี้คือ Custom Request Header ที่ NocoBase Server รองรับ ซึ่งสามารถนำไปใช้ในสถานการณ์ที่มีหลายแอปพลิเคชัน, การรองรับหลายภาษา (Internationalization), หลายบทบาท (Role) หรือการยืนยันตัวตนหลายรูปแบบได้ครับ
| Header | คำอธิบาย |
|---|---|
X-App | ระบุแอปพลิเคชันที่กำลังเข้าถึงในสถานการณ์ที่มีหลายแอปพลิเคชัน |
X-Locale | ภาษาปัจจุบัน (เช่น zh-CN, en-US) |
X-Hostname | ชื่อโฮสต์ของ Client |
X-Timezone | เขตเวลาของ Client (เช่น +08:00) |
X-Role | บทบาทปัจจุบัน |
X-Authenticator | วิธีการยืนยันตัวตนของผู้ใช้ปัจจุบัน |
💡 เคล็ดลับ
Header เหล่านี้มักจะถูก Interceptor ใส่ให้อัตโนมัติอยู่แล้วครับ ไม่จำเป็นต้องตั้งค่าด้วยตนเอง คุณจะต้องเพิ่มด้วยตนเองในสถานการณ์พิเศษเท่านั้น (เช่น ในสภาพแวดล้อมการทดสอบ หรือสถานการณ์ที่มีหลายอินสแตนซ์)
ใน React Component คุณสามารถเข้าถึง Context Object ได้ผ่าน useFlowContext() แล้วจึงเรียกใช้ ctx.api เพื่อส่งคำขอได้ครับ
useRequest ของ ahooksในการพัฒนาจริง คุณสามารถใช้ useRequest Hook ที่มาจาก ahooks ร่วมด้วยได้ เพื่อจัดการ Lifecycle และสถานะของคำขอได้อย่างสะดวกยิ่งขึ้นครับ
วิธีนี้จะช่วยให้ Logic ของการส่งคำขอเป็นแบบ Declarative มากขึ้น โดยจะจัดการสถานะการโหลด, การแจ้งเตือนข้อผิดพลาด และ Logic การรีเฟรชให้โดยอัตโนมัติ ซึ่งเหมาะอย่างยิ่งสำหรับการใช้งานใน Component ครับ