Как получить доступ к бэкэнду FastAPI с другого компьютера/IP в той же локальной сети?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как получить доступ к бэкэнду FastAPI с другого компьютера/IP в той же локальной сети?

Сообщение Anonymous »

И серверная часть 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»