Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • TanStack Documentation42টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Project Overview
  • Architecture
  • Folder Structure
  • Setup Next.js
  • Axios Setup
  • API Client
  • API Types
  • Query Install
  • Query Provider
  • Query Keys
  • Data Fetching
  • States
  • Devtools
  • Create Mutation
  • Update Mutation
  • Delete Mutation
  • Cache Invalidation
  • Optimistic Update
  • Pagination
  • Search
  • Filtering
  • Sorting
  • TanStack Table
  • Table Explore
  • Table Columns
  • Table Actions
  • React Hook Form
  • Zod Validation
  • Create Form
  • Edit Form
  • Dialog Modal
  • Delete Confirmation
  • Complete CRUD Flow
  • Full Integration
  • Error Handling
  • Loading States
  • Reusable Components
  • Production
  • Complete Project
  • Common Mistakes
  • Best Practices
  • Interview Q&A
  1. Docs
  2. TanStack
  3. API Client — Typed Functions
TanStackIntermediate

API Client — Typed Functions

REST endpoints-এর জন্য typed function — getProducts, createProduct, updateProduct, deleteProduct — বাংলায়।

7টি অংশবাংলা ভাষায়

প্রতিটি useQuery-র queryFn-এর ভেতরে সরাসরি api.get(...) লেখার বদলে আলাদা typed function বানাব। এতে hooks পরিষ্কার থাকে এবং যেকোনো জায়গায় একই function reuse করা যায়।

src/lib/products-api.tsts
ts
import { api } from "./axios";


export function listProducts(params: ProductQueryParams) {
  return api.get<ProductListResponse>("/products", { params })
    .then((res) => res.data);
}

export function getProduct(id: string) {
  return api.get<Product>("/products/" + id)
    .then((res) => res.data);
}

export function createProduct(input: CreateProductInput) {
  return api.post<Product>("/products", input)
    .then((res) => res.data);
}

export function updateProduct(id: string, input: Partial<CreateProductInput>) {
  return api.put<Product>("/products/" + id, input)
    .then((res) => res.data);
}

export function deleteProduct(id: string) {
  return api.delete<void>("/products/" + id);
}

// অনুষঙ্গিক types import

  CreateProductInput,
  ProductListResponse,
} from "@/types/product";

কেন `.then((res) => res.data)`

আমরা চাই queryFn যেন সরাসরি ডেটা return করে — Product — axios response-এর { data: ... } wrap-টা না। তাই প্রতিটি function-এ res.data বের করে দিচ্ছি। ফলে useQuery থেকে data-ই মেলে।

কোথায় REST server

baseURL /api-তে থাকায় listProducts() আসলে আঘাত করবে /api/products — অর্থাৎ Next.js-এর নিজের route handler। ওই route handler-এ আমরা backend REST API-তে proxy করতে পারি অথবা সহজভাবে in-memory/products JSON file দিয়ে serve করতে পারি (পরের অধ্যায়ে)।

এক জায়গাতেই HTTP

সব Axios/dependency শুধু lib/-তেই রাখুন — hooks/, components-এ সরাসরি axios import করবেন না। তখন API-র ধাঁচ বদলালে (যেমন ক্লায়েন্ট SDK-এ) শুধু একটি লেয়ার বদলায়।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরAxios Setup — Instance ও InterceptorsপরেরAPI Types — TypeScript কোডের বেবা
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com