Files
ocs-portal-web/app/api/priceplan/menu/route.ts
2025-04-15 13:56:54 +07:00

39 lines
1.3 KiB
TypeScript

import axios from 'axios';
import { cookies } from 'next/headers'
import { NextResponse } from 'next/server';
export const POST = async () => {
// INTERPOLATING API URL OF BACKEND
const url: string = `${process.env.NEXT_PUBLIC_API_URL}/priceplan/getmenuList`
const data = JSON.parse(cookies().get('credential')?.value ?? "")
const token = `Bearer ${data.token}`
// console.log(token, 'cek token');
try {
// MAKE AN API REQUEST
/*
* - WE USE AXIOS INSTEAD OF FETCH
* - FETCH ALWAYS RETURNS "TypeError [ERR_INVALID_STATE]: Invalid state: ReadableStream is already closed"
* WHEN WE RUN "response.json()"
*/
const response = await axios(url, {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': token
},
})
return NextResponse.json(response.data, { status: response.status });
} catch (error: any) {
if (axios.isAxiosError(error)) {
return NextResponse.json(error.response?.data || { message: 'Unknown error' }, { status: error.response?.status || 500 });
}
return NextResponse.json({ message: 'An unexpected error occurred' }, { status: 500 });
}
}