Snext est une application Next.js qui vous permet de créer des routes API en Python.
Ensuite, parce que ça ressemble à "serpent" ?. Vous savez, comme un Python.
/! /! /! Ceci est une première expérience
Hé, si vous vous retrouvez là-bas, vous êtes probablement un développeur JavaScript et Python n'est que votre deuxième langage.
Voici comment configurer un environnement Python efficace.
Je suggère d'utiliser Pyenv pour installer Python. Considérez-le comme un équivalent de Node Version Manager ou Volta mais pour Python.
Cela équivaut à utiliser Volta ou NVM dans l'écosystème Node.
Python n'a pas de dossier node_modules
. C'est peut-être pour le mieux, mais cela rend la gestion des dépendances assez difficile lorsque vous avez beaucoup de projets sur votre machine.
Un environnement virtuel est un peu similaire : il demandera à Python d'installer les packages localement sur votre projet actuel, et non globalement.
La différence avec Node, c'est qu'il faut les activer systématiquement.
Configurez un environnement virtuel et installez les packages Python :
python3 -m venv ./venv
source ./venv/bin/activate
pip install -r requirements.txt
Vous devez activer l'environnement virtuel lorsque vous commencez à travailler :
source ./venv/bin/activate
Malheureusement, cette commande ne fonctionne pas dans les scripts NPM. Vous devez le taper à chaque fois.
vercel
CLI peut résoudre nos problèmes (voir https://vercel.com/docs/cli#commands/dev) => c'est fait, c'est le cas ! Utilisez Vercel CLI au lieu de next dev
.
La commande Vercel CLI vercel dev
est capable de simuler localement un environnement sans serveur, afin que vous puissiez tester vos routes API.
Si vous placez toutes les routes API dans ./api/
et utilisez vercel dev
, vous pouvez avoir à la fois des routes API Python et Node.js (et bien sûr, l'interface Next.js fonctionne toujours correctement).
Lire vercel/vercel#6197
Lors de l'exécution de Next, vous souhaiterez que tout s'exécute sur localhost:3000
, mais vous disposerez de 2 serveurs : un pour Node, un pour Python. Cela nécessite une certaine logique de réécriture pour fonctionner.
En outre, nous pouvons avoir plusieurs routes API, qui agiront comme des fonctions sans serveur une fois déployées. Mais localement, nous devons en faire un seul serveur.
Le modèle recommandé pour obtenir des données statiques de vos routes API dans Next consiste à réutiliser la logique de base de la route directement dans getStaticProps
. Mais cela n’est possible que parce que les deux utilisent JS. Avec Python, nous aurions d'abord besoin de créer les routes API, de les exécuter, puis de créer uniquement le frontend.
Doit être testé avec Vercel CLI.
Nous avons cette erreur https://github.com/vercel/community/discussions/103
dans la dernière version, le runtime Python semble trop gros. Voir vercel/community#103 (commentaire) Voir vercel/vercel#2830
Voir https://github.com/vercel/vercel/blob/main/errors/now-dev-as-dev-script.md
Le script doit être nommé autrement, par exemple dev:vercel
, sinon il crée une boucle infinie.
Non -
dans les noms de dossiers en Python, ou vous allez avoir du mal à importer des fichiers... Utilisez le trait de soulignement _
. Cela peut conduire à des URL désordonnées car le nom du dossier est lié au nom de la route dans Next.
(D'après mon expérience limitée avec Python) J'aurais tendance à comparer Flask ou Falcon à Express : beaucoup utilisé, assez minime. Mais le comportement de blocage de Python peut être très déroutant pour le développeur JavaScript. Je vais donc opter pour Sanic, car il repose sur async/wait comme Node.js et pourrait être le moins déroutant.
Quoi qu’il en soit, toutes les connaissances recueillies pour un framework doivent être réutilisables pour n’importe quel autre framework.
Pour simplifier, nous supposerons un hébergement sur Vercel. Nous aurons peut-être besoin d'un vercel.json
pour indiquer à Vercel quel runtime utiliser : https://vercel.com/docs/runtimes#advanced-usage/community-runtimes
Puisque le développement de Vercel fonctionne, nous devrions nous attendre à ce que le déploiement de Vercel fonctionne immédiatement. A tester.
En Python, vous avez besoin d'un environnement virtuel pour isoler vos packages entre les applications, tandis qu'en JS node_modules
joue ce rôle. Le problème est que l'environnement virtuel doit être activé lorsque vous commencez à travailler, c'est donc une étape supplémentaire pour le développeur. Pour aggraver les choses, la commande source
qui active l'environnement ne peut pas être (la dernière fois que j'ai vérifié) placée dans package.json
, vous devez donc vous souvenir de la bonne commande à chaque fois.
Il s'agit d'un projet Next.js démarré avec create-next-app
.
Tout d'abord, exécutez le serveur de développement :
npm run dev
# or
yarn dev
Ouvrez http://localhost:3000 avec votre navigateur pour voir le résultat.
Vous pouvez commencer à éditer la page en modifiant pages/index.js
. La page se met à jour automatiquement au fur et à mesure que vous modifiez le fichier.
Les routes API sont accessibles sur http://localhost:3000/api/hello. Ce point de terminaison peut être modifié dans pages/api/hello.js
.
Le répertoire pages/api
est mappé sur /api/*
. Les fichiers de ce répertoire sont traités comme des routes API au lieu de pages React.
Pour en savoir plus sur Next.js, consultez les ressources suivantes :
Vous pouvez consulter le référentiel Next.js GitHub – vos commentaires et contributions sont les bienvenus !
Le moyen le plus simple de déployer votre application Next.js consiste à utiliser la plateforme Vercel des créateurs de Next.js.
Consultez notre documentation de déploiement Next.js pour plus de détails.