ក្បួនកណ្តាល ដែលភាសាអង់គ្លេសហៅថា middleware គឺជាក្បួនពិសេសម៉្យាងដែលនឹងត្រូវយកទៅប្រើជាស្វ័យប្រវត្តិ នៅគ្រប់ការចូលទៅតាមផ្លូវទៅកាន់ឯកសារទាំងឡាយ។ យើងអាចប្រើប្រាស់ក្បួននេះក្នុងការកែប្រែឬបន្ថែមទិន្នន័យថ្មីសំរាប់ឯកសារទាំងនោះបាន។ ការបង្កើតក្បួនកណ្តាលត្រូវធ្វើឡើងនៅក្នុងឯកសារមួយមានឈ្មោះថា middleware.js ឬ middleware.ts នៅក្នុងថត src ។
// src/middleware.js
export function onRequest ({ locals, request }, next) {
locals.title = "ចំណងជើង"
return next()
}
ក្បួនកណ្តាលត្រូវមានឈ្មោះថា onRequest( ) ដែលត្រូវនាំចេញដោយបញ្ជា export ។ នៅពេលត្រូវយកទៅប្រើ ក្បួនកណ្តាលនឹងទទួលបាននូវវត្ថុដែលជាសំណុំទិន្នន័យមួយមានឈ្មោះថា context និងវត្ថុដែលជាក្បួនមួយមានឈ្មោះថា next( ) ជាស្វ័យប្រវត្តិ។ នៅក្នុងសំណុំទិន្នន័យ context មានសំណុំទិន្នន័យ locals និងសំណុំទិន្នន័យ request ដែលយើងអាចស្រង់យកមកប្រើទៅតាមសេចក្តីត្រូវការ។ យើងចាំបាច់ត្រូវយកក្បួនឈ្មោះ next( ) មកប្រើនិងបញ្ជូលលទ្ធផលចេញទៅក្រៅ ដើម្បីអាចអោយឯកសារដទៃទៀតអាចត្រូវយកមកប្រើបាន។
ដោយឡែក សំណុំទិន្នន័យ locals អាចត្រូវយកមកប្រើសំរាប់កែប្រែទិន្នន័យនៅក្នុងនោះ និងឬបន្ថែមទិន្នន័យថ្មីចូលទៅក្នុងនោះ។ សំណុំទិន្នន័យ locals នឹងត្រូវផ្តល់អោយទៅសំណុំទិន្នន័យសកល Astro ដែលនៅក្នុងនោះ យើងអាចស្រង់យកសំណុំទិន្នន័យ locals មកប្រើនៅក្នុងឯកសារ Astro បានគ្រប់ពេលវេលា។
<!--src/pages/index.astro-->
---
const data = Astro.locals
---
<p>ទិន្នន័យដែលត្រូវបញ្ជូនមក៖ {data.title}</p>
នៅក្នុងក្បួនចុងផ្លូវ យើងក៏អាចស្រង់យកសំណុំទិន្នន័យ locals ពីសំណុំទិន្នន័យ context មកប្រើបានដែរ ដោយធ្វើដូចខាងក្រោមនេះ៖
// src/pages/api/info.js
export async function GET({locals}){
return new Response(JSON.stringify(locals))
}
<!--src/pages/index.astro-->
---
const response = await fetch("http://localhost:4321/api/info")
const data = await response.json()
---
<p>ទិន្នន័យដែលត្រូវបញ្ជូនមក៖ {data.title}</p>