設定

我們可以獨立開發FAST API,另一個選擇是利用nextjs-fastapi將Next.js及FastAPI整合在一個專案裡。

首先,我們來先新增一個資料夾,並利用Next.js FastAPI Starter在目前的資料夾產生一個新的專案。

npx create-next-app . --example "<https://github.com/digitros/nextjs-fastapi>"

image.png

看到這畫面,就知道安裝好了~

image.png

可以看得出來,就是一個next專案,只是多了一個api路徑,裡面有個index.py,跟一般的next專案一樣採用app router。

image.png

FAST API的部分是怎麼運作的呢? 其實,秘密就在package.json裡:

{
  "name": "nextjs-fastapi",
  "version": "0.2.0",
  "private": true,
  "scripts": {
    **"fastapi-dev": "pip3 install -r requirements.txt && python3 -m uvicorn api.index:app --reload",**
    "next-dev": "next dev",
    **"dev": "concurrently \\"npm run next-dev\\" \\"npm run fastapi-dev\\"",**
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@types/node": "22.5.5",
    "@types/react": "18.3.8",
    "@types/react-dom": "18.3.0",
    "autoprefixer": "10.4.20",
    "concurrently": "^9.0.1",
    "eslint": "8.41.0",
    "eslint-config-next": "13.4.4",
    "next": "^14.2.13",
    "postcss": "^8.4.47",
    "react": "18.3.1",
    "react-dom": "18.3.1",
    "tailwindcss": "3.4.12",
    "typescript": "5.6.2"
  }
}

所以,當我們執行npm run dev時,node.js會同時啟動next並透過python執行fastapi。好,我們來試試看:

<aside> 💡

VS Code也會建議安裝Python extension for Visual Studio Code

</aside>

image.png

可以看到除了原本的next.js,python的部分也同時啟動了。

image.png

可以看到網頁了~

image.png

網頁的內容就是在/app/page.tsx

image.png