Ошибка Axios и ошибки с postrgresql при развертывании django

простое приложение django/react только начинаю учиться развертывать с помощью железной дороги. Текущая ошибка - "Unsupported protocol postgresql:" поэтому попробовал добавить "http://" и "https://" к api url, что дало ошибку cors и все еще не работало, поэтому вернулся к коду ниже.

import axios from "axios";
import { ACCESS_TOKEN } from "./constants";

const apiUrl =
  //protocol missing?
  "postgresql://postgres:ttNgMy**@monorail.proxy.rlwy.net:50695/railway";

const api = axios.create({
  //import anything stored in an enviroment variable
  baseURL: apiUrl ? apiUrl : import.meta.env.VITE_API_URL,

  //local http://127.0.0.01 = import.meta.env.VITE_API_URL
});

ошибки: Uncaught (in promise) TypeError: y.response is undefined сообщение: "Неподдерживаемый протокол postgresql:" name: "AxiosError"

Похоже, вы пытаетесь вызвать базу данных PostgreSQL как API, а это не работает - сначала вам нужно сделать API вокруг нее. Я не настолько хорошо знаком с Django, но если вы новичок, вам стоит пролистать эту часть учебника Django, посвященную базам данных. По сути, вы захотите подключиться к вашей базе данных из вашего бэкенда с помощью специального клиента PostgreSQL (а не HTTP-клиента, каким является Axios); Django предоставляет ORM (объектно-реляционное отображение), которое делает доступ к базе данных намного проще, чем использование необработанного SQL. Затем вы можете сделать несколько конечных точек в /api или аналогичном пути, которые будут манипулировать вашими данными, и которые вы сможете вызвать с помощью Axios (или другого решения, например Fetch API или TanStack Query, оба из которых я бы рекомендовал больше, чем Axios для современных приложений, и особенно последний для React) из вашего фронтенда.

Теоретически, вы могли бы использовать некоторые клиенты PostgreSQL из вашего фронтенда, но это небезопасно - если ваш фронтенд подключается напрямую, то не только ваши учетные данные базы данных отправляются во фронтенд открытым текстом, но и нет возможности добавить логику безопасной авторизации. Конечно, вы можете добавить несколько операторов if во фронтенд, но ничто не помешает злоумышленнику взять вашу строку подключения и обойти ее, обратившись напрямую к базе данных. Есть некоторые варианты, которые позволяют вам безопасно управлять данными непосредственно из фронтенда, без написания бэкенда, такие как Firebase и Supabase, но подключение к обычной базе данных, такой как PostgreSQL, из фронтенда - в целом плохая идея, и у вас уже есть отличный бэкенд в Django.

Вернуться на верх