នៅ​ពេល​ដែល​យើង​ប្រើប្រាស់​ក្បួន​ឈ្មោះ fetch( ) ជាមួយ​នឹង​ផ្លូវ​ចូល​ទៅ​កាន់​ក្បួន​ចុង​ផ្លូវ​ណា​មួយ browser នឹង​ផ្តល់​វិធី HTTP (HTTP method) ឈ្មោះ GET អោយ​ទៅ​សំណុំ​ទិន្នន័យ request នៅ​ក្នុង​សំណុំ​ទិន្នន័យ context ។ ជាការឆ្លើយតប ក្បួន​ចុង​ផ្លូវ​ឈ្មោះ GET ដែល​ជា​ឈ្មោះត្រូវ​គ្នា​នឹង​វិធី​នេះ នឹង​ត្រូវ​យក​មក​ប្រើជា​ស្វ័យប្រវត្តិ​។ ក្រៅ​ពី​វិធី HTTP ឈ្មោះ GET នេះ នៅ​មាន​វិធី HTTP ជា​ច្រើន​ទៀត ដែល​អាច​ត្រូវ​ផ្តល់​អោយ​សំណុំ​ទិន្នន័យ request ដើម្បី​ជ្រើសរើស​យក​ក្បួន​ចុង​ផ្លូវមាន​ឈ្មោះ​ត្រូវ​គ្នា​នឹង​វិធី HTTP នេះ​មក​ប្រើ​។ វិធី HTTP ដែល​ត្រូវ​បានយក​មក​ប្រើប្រាស់​ជា​ញឹកញាប់មាន​ដូច​ជា GET, POST, PUT, DELETE, PATCH ជា​ដើម​។ ក្រៅ​ពី​វិធី​ឈ្មោះ GET វិធី HTTP ដទៃ​ទៀត​នឹង​មិន​ត្រូវ​បាន​ផ្តល់​អោយ​ទៅ​សំណុំ​ទិន្នន័យ request ជា​ស្វ័យប្រវត្តិ​ឡើយ យើង​ចាំបាច់​ត្រូវ​ផ្តល់​វិធី​ទាំងនេះ​​អោយ​ទៅ​សំណុំ​ទិន្នន័យ request ដោយ​ខ្លួនយើង​ផ្ទាល់​។

 

<!--src/pages/index.astro-->
---
const response = await fetch("http://localhost:4321/api/1")
const data = await response.json()
---

<p>ឈ្មោះ​អ្នក​ប្រើប្រាស់​​គឺ៖ {data.username} </p>
<p>វិធី HTTP ដែល​ត្រូវ​ផ្តល់​អោយ​ទៅ​អថេរ​ request គឺ៖ {data.method}</p>

 

// src/pages/api/[info].js

const usernames = ["សុធារឹទ្ធ", "ផល្លា", "ម៉េង", "ចំរើន"]

export async function GET({params, request}){
    const id = params.info
    return new Response(
        JSON.stringify({
            username: usernames[id],
            method: request.method
        }),
        {
            status: 200,
            headers: {
                "Content-Type": "application/json"
            }
        }
    )
}

export function getStaticPaths() {
    return [
      { params: { info: "0"} },
      { params: { info: "1"} },
      { params: { info: "2"} },
      { params: { info: "3"} }
    ]
}

 

ជា​រួម វិធី HTTP មាន​តួនាទី​ជា​អ្នក​កំណត់​យកក្បួន​ចុង​ផ្លូវ​មាន​ឈ្មោះ​ដូច​គ្នាមក​​ប្រើ​ផង នឹង​បញ្ជក់​ពីទង្វើដែល​ក្បួនចុង​ផ្លូវ​​គួរ​តែ​ត្រូវ​ធ្វើ​ផង។ ជាក់ស្តែង វិធី​ HTTP ឈ្មោះ POST នឹង​ជ្រើសរើស​យក​ក្បួន​ចុង​ផ្លូវ​មាន​ឈ្មោះ​ថា POST ដូច​គ្នាមក​ប្រើ​ផង និង​បញ្ជាក់​ថាក្បួន​ចុង​ផ្លូវ​នេះ គួរ​តែ​ទទួល​យក​ទិន្នន័យ​ដែល​ត្រូវ​ផ្ញើរ​ទៅ​ បញ្ជូល​ក្នុង​មូលដ្ឋាន​ទិន្នន័យ ឬ​ក៏​ធ្វើ​អ្វី​ផ្សេង​ទៀត​ជាមួយ​នឹង​ទិន្នន័យ​នេះ​។ ដូចនេះ នៅ​ពេល​ដែល​យើង​ផ្តល់​វិធី HTTP ឈ្មោះ​ POST អោយ​ទៅ​ក្បួន​ចុង​ផ្លូវ យើង​ចាំបាច់​ត្រូវផ្តល់​​ទិន្នន័យ​មួយ​ចំនួន​អោយ​ទៅ​ក្បួន​ចុង​ផ្លូវ​ផង​ដែរ​។ ការផ្តល់​វិធី​ HTTP ឈ្មោះ POST និង​ទិន្នន័យ​ត្រូវ​ធ្វើឡើង​​ជាមួយ​នឹង​ក្បួន​ឈ្មោះ fetch( ) ​​​។ ការផ្តល់​វិធី HTTP ឈ្មោះ POST អាច​ត្រូវ​ធ្វើ​ឡើង​តែ​ជា​មួយ​នឹង​របៀប SSR តែ​ប៉ុណ្ណោះ​។

 

<!--src/pages/index.astro-->
---
const response = await fetch('http://localhost:4321/api/info', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify({newUser: 'ទិព្វ​សុដាច័ន្ទ'})
})
const data = await response.json()
---

<p>បញ្ជី​ឈ្មោះ​អ្នកប្រើប្រាស់​ថ្មី​​​គឺ៖ {data.toString()} </p>

 

// src/pages/api/info.js

const usernames = ["សុធារឹទ្ធ", "ផល្លា", "ម៉េង", "ចំរើន"]

export async function POST({params, request}){
    const data = await request.json()
    usernames.push(data.newUser)
    return new Response(JSON.stringify(usernames))
}

 

នៅ​ក្នុង​សំណុំ​ទិន្នន័យ context ដែល​ត្រូវ​ផ្តល់​អោយ​ទៅ​ក្បួន​ចុង​ផ្លូវជា​ស្វ័យប្រវត្តិ មាន​ក្បួន​ពិសេស​ម៉្យាង​មាន​ឈ្មោះ​ថា redirect ដែល​យើងអាច​​ស្រង់​យក​មក​ប្រើ​ក្នុងគោលបំណង​បង្វែរ​ទិសដៅ​ទៅ​កាន់​ផ្លូវ​ណា​មួយ​ផ្សេង។

 

<!--src/pages/index.astro-->
---
return await fetch('http://localhost:4321/api/info')
---

<p>បង្ហាញ​ព័ត៌មាន</p>

 

// src/pages/api/info.js

const usernames = ["សុធារឹទ្ធ", "ផល្លា", "ម៉េង", "ចំរើន"]

export async function GET({params, request, redirect}){
    return redirect("/posts/post-2", 307)
}