Je travaille sur un projet oauth qui m'oblige à avoir une URL de rappel qui peut être chargée en cas d'autorisation réussie afin de demander des jetons d'accès, mais je ne sais pas comment je peux exécuter ce serveur de manière appropriée. Je connais la configuration utile du serveur python en une ligne python -m http.server, mais cela ne fera que charger le répertoire dans lequel j'ai démarré le serveur et agira en tant que serveur pour naviguer dans les fichiers de ce répertoire.

Existe-t-il un moyen privilégié de configurer un serveur simple pouvant être utilisé pour ce processus de redirection et d'effectuer l'appel de serveur supplémentaire dont j'ai besoin ? Aurais-je besoin d'utiliser un framework web comme Django ?

0
cphill 15 sept. 2020 à 15:55

1 réponse

Meilleure réponse

En utilisant python -m http.server, vous ne pouvez servir que des fichiers statiques, mais vous devez exécuter du code qui obtient un ou plusieurs arguments et l'utilise.

Vous pouvez utiliser l'option --cgi dans python -m http.server --cgi, puis vous pouvez mettre le script (dans n'importe quelle langue) dans le dossier cgi-bin et l'exécuter http://localhost/cgi-bin/script.py.

Mais la méthode avec CGI est très ancienne et il peut être beaucoup plus facile d'utiliser une partie du Web microframework comme Flask ou 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)

Et exécutez-le en tant que python script.py et testez dans le navigateur Web

http://127.0.0.1/?data=qwerty

Et request.args.get("data") devrait vous donner qwerty que vous pouvez utiliser dans le code Python.

1
furas 15 sept. 2020 à 14:39