#python #oauth-2.0 #localhost
#python #oauth-2.0 #localhost
Вопрос:
Я работаю над проектом oauth, который требует от меня наличия URL обратного вызова, который может быть загружен после успешной авторизации для запроса токенов доступа, но я не уверен, как я могу запустить этот сервер надлежащим образом. Я знаком с полезной однострочной настройкой сервера python python -m http.server
, но это просто загрузит каталог, в котором я запустил сервер, и будет действовать как сервер для навигации по файлам в этом каталоге.
Есть ли предпочтительный способ настроить простой сервер, который можно использовать для этого процесса перенаправления, и выполнить дополнительный вызов сервера, который мне нужен? Нужно ли мне использовать веб-фреймворк, такой как Django?
Комментарии:
1. вам нужен сервер, который может запускать код на сервере (Python / PHP / Ruby / etc.) Вы могли бы использовать опцию
--cgi
(python -m http.server --cgi
), и тогда он сможет запускать сценарии в папкеcgi-bin
—http://localhost/cgi-bin/script.py
. НоCGI
метод очень старый и, вероятно, более полезным может быть использование чего-то более нового, такого как веб-фреймворкFlask
,Bottle
,Django
Ответ №1:
С помощью python -m http.server
вы можете обслуживать только статические файлы, но вам нужно запустить некоторый код, который получает аргументы и использует их.
Вы могли бы использовать опцию --cgi
в python -m http.server --cgi
, а затем вы могли бы поместить скрипт (на любом языке) в папку cgi-bin
и запустить его http://localhost/cgi-bin/script.py
.
Но метод с CGI
очень старый, и может быть намного проще использовать некоторые веб- microframework
такие Flask
, как или bottle
script.py
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
print('args:', request.args) # display text in console
#print('form:', request.form)
#print('data:', request.data)
#print('json:', request.json)
#print('files:', request.files)
return request.args.get('data', 'none') # send text to web browser
if __name__ == '__main__':
app.run(port=80, debug=True)
И запустите его как python script.py
и протестируйте в веб-браузере
http://127.0.0.1/?data=qwerty
И request.args.get("data")
должен предоставить вам qwerty
информацию, которую вы можете использовать в коде Python.
Комментарии:
1. Спасибо за объяснение! Это было чрезвычайно полезно!