Next.js Guide (App Router)
Server route handler + client component patterns.
Install
npm install @xaikorea0/js-client
Route handler (app/api/taxia/route.ts)
import { NextResponse } from 'next/server';
import { TaxiaClient } from '@xaikorea0/js-client';
const client = new TaxiaClient({ apiKey: process.env.TAXIA_API_KEY || '' });
export async function POST(req: Request) {
const { question } = await req.json();
const res = await client.query(question);
return NextResponse.json(res);
}
Client component (app/page.tsx)
'use client';
import { useState } from 'react';
export default function Page() {
const [q, setQ] = useState('법인세율은 얼마인가요?');
const [a, setA] = useState('');
const [loading, setLoading] = useState(false);
const ask = async () => {
setLoading(true);
const res = await fetch('/api/taxia', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ question: q }),
}).then(r => r.json());
setA(res.answer);
setLoading(false);
};
return (
setQ(e.target.value)} />
{loading ? 'Loading...' : a}
);
}
Streaming notes
- Use client.queryStream in client components or stream from route with text/event-stream.
- When proxying, keep Accept: text/event-stream and consider cache: 'no-store'.