Commit 24f675cf authored by Lê Bảo Hồng Đức's avatar Lê Bảo Hồng Đức

fix route member,partner

parent c152d34d
......@@ -2,56 +2,49 @@ import { NextResponse } from "next/server";
import { MOCK_FEATURED_MEMBERS_RESPONSE } from "@/app/api/mock-data";
const BACKEND_HOST = process.env.NEXT_PUBLIC_BACKEND_HOST || "https://news.vccihcm.vn";
const FEATURED_MEMBER_API_URL = `${BACKEND_HOST.replace(/\/+$/, "")}/api/v1.0/vcci/featured-members`;
const BACKEND_FEATURED_MEMBER_API_URL = `${BACKEND_HOST.replace(/\/+$/, "")}/api/v1.0/vcci/featured-members`;
// Fallback: gọi trực tiếp VCCI HCM API
const FALLBACK_FEATURED_MEMBER_API_URL =
// Ưu tiên gọi trực tiếp VCCI HCM API (BE hiện chưa có endpoint này)
const VCCI_FEATURED_MEMBER_API_URL =
"https://vccihcm.vn/api/v1.0/organizations" +
"?filters=users.status_id+%3D%3D+36ca1cc5-7b6e-4f9f-b973-69c5207deb62" +
"&pageSize=12&sortField=created_at&sortOrder=ASC";
export async function GET() {
// 1) Ưu tiên VCCI HCM API
try {
const response = await fetch(FEATURED_MEMBER_API_URL, {
const response = await fetch(VCCI_FEATURED_MEMBER_API_URL, {
headers: { Accept: "application/json" },
next: { revalidate: 300 },
});
if (!response.ok) {
console.warn(
`[api/featured-members] upstream returned ${response.status}, trying fallback`,
);
// Thử fallback - gọi trực tiếp VCCI HCM API
return tryFallback();
if (response.ok) {
const data = await response.json();
return NextResponse.json(data);
}
const data = await response.json();
return NextResponse.json(data);
console.warn(`[api/featured-members] VCCI API returned ${response.status}, trying backend`);
} catch (error) {
console.error("[api/featured-members] upstream failed, trying fallback", error);
return tryFallback();
console.error("[api/featured-members] VCCI API failed, trying backend", error);
}
}
async function tryFallback() {
// 2) Fallback: BE endpoint (nếu có)
try {
const fallbackResponse = await fetch(FALLBACK_FEATURED_MEMBER_API_URL, {
const response = await fetch(BACKEND_FEATURED_MEMBER_API_URL, {
headers: { Accept: "application/json" },
next: { revalidate: 300 },
});
if (!fallbackResponse.ok) {
console.warn(
`[api/featured-members] fallback returned ${fallbackResponse.status}, serving mock data`,
);
return NextResponse.json(MOCK_FEATURED_MEMBERS_RESPONSE, { status: 200 });
if (response.ok) {
const data = await response.json();
return NextResponse.json(data);
}
const data = await fallbackResponse.json();
console.log("[api/featured-members] served from fallback");
return NextResponse.json(data);
console.warn(`[api/featured-members] backend returned ${response.status}, serving mock data`);
} catch (error) {
console.error("[api/featured-members] fallback failed, serving mock data", error);
return NextResponse.json(MOCK_FEATURED_MEMBERS_RESPONSE, { status: 200 });
console.error("[api/featured-members] backend failed, serving mock data", error);
}
// 3) Cuối cùng: mock data
return NextResponse.json(MOCK_FEATURED_MEMBERS_RESPONSE, { status: 200 });
}
......@@ -2,56 +2,49 @@ import { NextResponse } from "next/server";
import { MOCK_PARTNERS_RESPONSE } from "@/app/api/mock-data";
const BACKEND_HOST = process.env.NEXT_PUBLIC_BACKEND_HOST || "https://news.vccihcm.vn";
const PARTNER_API_URL = `${BACKEND_HOST.replace(/\/+$/, "")}/api/v1.0/vcci/partners`;
const BACKEND_PARTNER_API_URL = `${BACKEND_HOST.replace(/\/+$/, "")}/api/v1.0/vcci/partners`;
// Fallback: gọi trực tiếp VCCI HCM API
const FALLBACK_PARTNER_API_URL =
// Ưu tiên gọi trực tiếp VCCI HCM API (BE hiện chưa có endpoint này)
const VCCI_PARTNER_API_URL =
"https://vccihcm.vn/api/v1.0/organizations" +
"?filters=type%3D%3DSPONSOR&pageSize=12" +
"&sortField=sort_order&sortOrder=ASC";
export async function GET() {
// 1) Ưu tiên VCCI HCM API
try {
const response = await fetch(PARTNER_API_URL, {
const response = await fetch(VCCI_PARTNER_API_URL, {
headers: { Accept: "application/json" },
next: { revalidate: 300 },
});
if (!response.ok) {
console.warn(
`[api/partners] upstream returned ${response.status}, trying fallback`,
);
// Thử fallback - gọi trực tiếp VCCI HCM API
return tryFallback();
if (response.ok) {
const data = await response.json();
return NextResponse.json(data);
}
const data = await response.json();
return NextResponse.json(data);
console.warn(`[api/partners] VCCI API returned ${response.status}, trying backend`);
} catch (error) {
console.error("[api/partners] upstream failed, trying fallback", error);
return tryFallback();
console.error("[api/partners] VCCI API failed, trying backend", error);
}
}
async function tryFallback() {
// 2) Fallback: BE endpoint (nếu có)
try {
const fallbackResponse = await fetch(FALLBACK_PARTNER_API_URL, {
const response = await fetch(BACKEND_PARTNER_API_URL, {
headers: { Accept: "application/json" },
next: { revalidate: 300 },
});
if (!fallbackResponse.ok) {
console.warn(
`[api/partners] fallback returned ${fallbackResponse.status}, serving mock data`,
);
return NextResponse.json(MOCK_PARTNERS_RESPONSE, { status: 200 });
if (response.ok) {
const data = await response.json();
return NextResponse.json(data);
}
const data = await fallbackResponse.json();
console.log("[api/partners] served from fallback");
return NextResponse.json(data);
console.warn(`[api/partners] backend returned ${response.status}, serving mock data`);
} catch (error) {
console.error("[api/partners] fallback failed, serving mock data", error);
return NextResponse.json(MOCK_PARTNERS_RESPONSE, { status: 200 });
console.error("[api/partners] backend failed, serving mock data", error);
}
// 3) Cuối cùng: mock data
return NextResponse.json(MOCK_PARTNERS_RESPONSE, { status: 200 });
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment