И серверная часть FastAPI, и внешний интерфейс Next.js работают на localost. На том же компьютере интерфейс без проблем выполняет вызовы API с помощью fetch. Однако на другом компьютере в той же сети, например, по адресу 192.168.x.x, интерфейс запускается, но его вызовы API больше не работают.
Я пробовал использовать прокси-сервер как next.js, но это все равно не работает.
Фронтенд:
export default function People({setPerson}:PeopleProps) {
const fetcher = async (url:string) => await axios.get(url).then((res) => res.data);
const { data, error, isLoading } = useSWR(`${process.env.NEXT_PUBLIC_API}/people`, fetcher);
if (error) return "Failed to load...";
return (
{isLoading? "Loading..." :data.map((person: Person) =>
{person.name} )}
)
}
Приложение Next.js при запуске загружает файл env.local, который содержит:
NEXT_PUBLIC_API=http://locahost:20002
Бэкенд:
rom typing import List
from fastapi import APIRouter, Depends
from ..utils.db import get_session as db
from sqlmodel import Session, select
from ..schemas.person import Person, PersonRead
router = APIRouter()
@router.get("/people", response_model = List[PersonRead])
async def get_people(sess: Session = Depends(db)):
res = sess.exec(select(Person)).all()
return res
Фронтенд запускается с помощью: npm run dev и выводит результаты
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
Бэкэнд работает с: uvicorn hogar_api.main:app --port=20002 --host=0.0.0.0 --reload и выводит:INFO: Uvicorn running on http://0.0.0.0:20002 (Press CTRL+C to quit)
Когда я открываю браузер на http://localhost:3000 на том же компьютере, список Person отображается на экран.
Когда я открываю браузер на http://192.168.x.x:3000 на другом компьютере в той же сети , я получаю сообщение «Не удалось загрузить...».
Когда я открываю документы Swagger FastAPI на любом компьютере, документация отображается правильно и все конечные точки работают. как и ожидалось.
CORS выглядит так:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
origins = [
"http://localhost:3000",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
Подробнее здесь: https://stackoverflow.com/questions/750 ... local-netw
Как получить доступ к бэкэнду FastAPI с другого компьютера/IP в той же локальной сети? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Запрос клиента React к бэкэнду FastAPI возвращает 405. Метод не разрешен.
Anonymous » » в форуме Python - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как получить доступ к сайту Django с другого устройства в локальной сети [дублировать]
Anonymous » » в форуме Python - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как получить доступ к Backend Fastapi с другой машины/IP в одной локальной сети?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как получить доступ к Backend Fastapi с другой машины/IP в одной локальной сети?
Anonymous » » в форуме Python - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-