Сервер Python API с угловым интерфейсом

Прошло некоторое время, когда я создал приложение с интерфейсом Angularjs и внутренним интерфейсом API, так что простите меня, если это довольно глупый вопрос. Я хотел бы запустить серверную часть Python, которая обслуживает API. Каждая конечная точка должна начинаться с /api/. Теперь это приложение работает в папке api, это что-то вроде моей структуры папок:

-api/
-- controllers/
-- __init__.py
-config/
-public/
-- assets/
-- index.html
-server.py

Теперь я выясняю, как я могу запустить веб-сервер, который обращается к файлам из папки api, когда я использую конечную точку, которая начинается с /api, и каждая другая конечная точка должна получать доступ к моему приложению AngularJS, которое доступно из общей папки. Таким образом, я могу получить доступ к конечным точкам Python API из моего приложения AngularJS и при этом оставаться в безопасности, потому что мои исходные файлы Python недоступны из общей папки.

Итак, конечные точки AngularJS: /home/login/logout и т.п.

Конечные точки Python API: /api/user, /api/user/profile и т. д. (Каждая конечная точка, которая начинается с /api/.

Любые идеи? Я мог бы запустить два сервера на разных портах, но этого не должно быть. Я сделал что-то подобное с PHP, но никогда не делал этого с Python, и почему-то у меня сейчас головная боль.

Если бы кто-нибудь мог мне помочь, это было бы здорово.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать nginx для развертывания этого проекта.

server {
    listen 80;
    listen [::]:80;

    server_name xyz.com;

    root /var/www/frontend/xyz-frontend/dist;
    index index.php index.html index.htm index.nginx-debian.html;


    # handles the api requests
    location /api {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            proxy_pass http://unix:/var/www/services/xyz/api.sock;
    }

    # FOR ANGULAR BUILD
    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ /index.html /custom_50x.html;
    }

Добро пожаловать. Я думаю, вам следует использовать фреймворк для сервера python.

argo 10.08.2018 12:27

Я использую Flask. Я предполагаю, что то, что я сделал с PHP, использовал PHP для API и позволил PHP отображать index.html для каждого URL-адреса, отличного от api. Общая папка содержала один файл PHP (index.php), который загружал (require) только файл Bootstrap.php, который находился в корневой папке. Возможно, для разработки я должен иметь возможность отображать index.html для каждого URL-адреса, отличного от api, по умолчанию, поэтому angular позаботится о конечных точках URL-адреса оттуда. Думаю, это должно сработать.

Erik van de Ven 10.08.2018 12:46

Другие вопросы по теме