[JAVA] Création d'une application Web qui mappe les informations sur les événements informatiques avec Vue et Flask

introduction

En surfant sur le net, j'ai appris que connpass sur le site du portail des événements informatiques distribue une API Web qui fournit des informations sur l'événement et affiche le lieu, etc. sur la carte. J'ai pensé que ce serait pratique s'il y avait une application pour le faire, et je l'ai complétée en sacrifiant les trois premiers jours de l'année.

Livrables

Signpost for connpass GitHub スクリーンショット 2020-01-07 21.57.23.png

Il s'agit d'une application dite SPA qui mappe dynamiquement la réponse obtenue par communication asynchrone.

Bibliothèque de cadres et raisons de la sélection

--Flacon: voir ci-dessous --Vue.js (Vue CLI): Parce que j'étudie, c'est mieux que React --Mapbox GL JS (+ VueMapbox): Axé sur les performances opérationnelles pour afficher un grand nombre de fonctionnalités --BootstrapVue: Dieu --OpenStreetMap: Parce que les noms des bâtiments sont plus faciles à voir que la carte de base du National Land Research Institute.

Divers points

Limite CORS

CORS est l'acronyme de Cross-Origin Resource Sharing. Il est facile de comprendre: "N'apportez pas de données du site Web de quelqu'un d'autre sans autorisation via une communication asynchrone." Dans ce cas, la réponse de connpassAPI ne peut pas être obtenue sur la face avant en raison de restrictions CORS. Une fois que vous l'avez reçu sur votre propre serveur, vous ne serez pas touché par la limite CORS. Donc, au début, je pensais utiliser l'hébergement et la fonction Firebase, mais j'ai décidé de créer un serveur avec Flask qui accède à l'API connpass et reçoit la réponse. Flask est très simple, donc je pense que c'est mieux si vous avez besoin d'un serveur parce que tout va bien comme cette fois-ci, et je l'aime personnellement, alors je l'ai adopté.

Construction de l'environnement Flask et Vue.js

Je pense que Vue.js est souvent utilisé en combinaison avec node.js. À la suite de diverses recherches, nous avons mis au point une configuration qui peut être développée en coexistence avec Flask. スクリーンショット 2020-01-07 21.51.25.png

Les scripts Python et les fichiers du serveur heroku sont placés à la racine et le recto est stocké dans le répertoire vue. En définissant comme suit, Flask fera référence à vue / dist comme un dossier de modèles.


from flask import Flask, render_template, request, jsonify, make_response, send_file, redirect, url_for

app = Flask(__name__, static_folder='./vue/dist/static', template_folder='./vue/dist')


#Ci-dessous le routage ...

Construire un serveur API

J'ai créé un serveur API qui accède conformément aux spécifications de l'API connpass et renvoie la réponse obtenue à l'avant comme suit.

import urllib.request, urllib.parse
import json
@app.route('/api/')
def getApi():
    keyword_or = request.args.get('keyword_or')
    ym = request.args.get('ym')
    ymd = request.args.get('ymd')
    owner_nickname = request.args.get('owner_nickname')
    start = request.args.get('start')
    order = request.args.get('order')
    count = request.args.get('count')
    all_params = {
        "keyword_or": keyword_or,
        "ym":ym,
        "ymd":ymd,
        "owner_nickname":owner_nickname,
        "start":start,
        "order":order,
        "count":100
    }

    params = {}
    #Supprimer les éléments avec une valeur de Aucun des paramètres
    for key in all_params:
        if all_params[key] != None:
            params[key] = all_params[key]


    p = urllib.parse.urlencode(params)
    url = "https://connpass.com/api/v1/event/?" + p

    with urllib.request.urlopen(url) as res:
        html = res.read().decode().replace(r"\n","")
        jsonData = json.loads(html)
        return jsonify(jsonData)

Il reçoit les mêmes paramètres que connpassAPI, le jette tel quel à connpassAPI, décode la réponse et la renvoie sous la forme json. C'est un serveur relais complet.

Site de référence

Création d'une application simple à l'aide de Vue.js (vue-cli) et Flask [Second half-server side] BootstrapVue VueMapbox

Recommended Posts

Création d'une application Web qui mappe les informations sur les événements informatiques avec Vue et Flask
J'ai fait une application WEB avec Django
J'ai créé une application de livre simple avec python + Flask ~ Introduction ~
J'ai créé un formulaire de tweet Nyanko avec Python, Flask et Heroku
J'ai créé un chat chat bot avec Tensor2Tensor et cette fois cela a fonctionné
J'ai créé une application Web en Python qui convertit Markdown en HTML
Je souhaite créer une application Web en utilisant React et Python flask
J'ai créé une application graphique avec Python + PyQt5
Lancer un serveur Web avec Python et Flask
Made Mattermost Bot avec Python (+ Flask)
J'ai créé un système qui décide automatiquement de s'exécuter demain avec Python et l'ajoute à Google Agenda.
Analyser et visualiser JSON (application Web ⑤ avec Python + Flask)
J'ai créé et publié une image Docker qui lit RSS et tweete automatiquement régulièrement.
Développement d'applications Web avec Flask
Application Web avec Python + Flask ② ③
Application Web avec Python + Flask ④
Comment déployer une application Web créée avec Flask sur Heroku
Créez une application Web qui reconnaît les nombres avec un réseau neuronal
(Échec) Déployer une application Web créée avec Flask avec heroku
J'ai fait une minuterie pomodoro dure qui fonctionne avec CUI
J'ai créé un plug-in qui peut faire "Daruma-san tombé" avec Minecraft
[Python] J'ai créé une fonction qui déchiffre et décrypte AES simplement en le lançant avec pycrypto.
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
J'ai créé un outil pour générer automatiquement un diagramme de transition d'état pouvant être utilisé à la fois pour le développement Web et le développement d'applications
J'ai fait un circuit simple avec Python (AND, OR, NOR, etc.)
J'ai fait un package qui peut comparer des analyseurs morphologiques avec Python
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
Créer une application Web avec Flask ②
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
J'ai créé un serveur Web avec Razpai pour regarder des anime
J'ai fait une loterie avec Python.
Notez que j'étais accro à accéder à la base de données avec mysql.connector de Python en utilisant une application Web
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python
Créer une application Web avec Django
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 3
Créer une application Web avec Flask ①
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 4
Lancement d'une application Web sur AWS avec django et modification des tâches
Créer une application Web avec Flask ③
Créer une application Web avec Flask ④
J'ai créé un démon avec Python
J'ai fait un programme qui calcule automatiquement le zodiaque avec tkinter
J'ai créé un bot LINE qui me dit le type et la force de Pokémon dans la région de Garal avec Heroku + Flask + PostgreSQL (Heroku Postgres)
J'ai créé une application Web qui trace le journal de vie enregistré sur Google Home comme un diagramme de Gantt.
J'ai créé un bot Discord en Python qui se traduit quand il réagit
[GCP] Procédure de création d'une application Web avec Cloud Functions (Python + Flask)
[Streamlit] Je déteste JavaScript, donc je crée une application Web uniquement avec Python
Je suis resté coincé dans la redirection d'une application flask avec un proxy inverse entre les deux
Jusqu'à ce que l'application Web créée avec Bottle soit publiée (déployée) sur Heroku
J'ai créé un outil qui facilite un peu la décompression avec CLI (Python3)
Flask + PyPy J'ai pris un benchmark de vitesse avec Blueprint pour le Web à grande échelle
Démarrez un serveur Web en utilisant Bottle et Flask (j'ai également essayé d'utiliser Apache)
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (5. Entropie des informations)
J'ai écrit un bot Slack qui notifie les informations de retard avec AWS Lambda
J'ai fait un module PyNanaco qui peut charger des crédits nanaco avec python