Démarrer avec Encore Go
Instructions
Installer la CLI Encore
# macOS
brew install encoredev/tap/encore
# Linux/WSL
curl -L https://encore.dev/install.sh | bash
# Windows (PowerShell)
iwr https://encore.dev/install.ps1 | iex
Créer une nouvelle application
# Interactif - choisir parmi les modèles
encore app create my-app
# Ou démarrer avec une application Go vierge
encore app create my-app --example=hello-world
Structure du projet
Une application Encore Go minimale :
my-app/
├── encore.app # Configuration de l'application
├── go.mod # Module Go
└── hello/ # Un service (package avec API)
└── hello.go # Points de terminaison API
Le fichier encore.app
// encore.app
{
"id": "my-app"
}
Ce fichier marque la racine de votre application Encore. L'id est l'identifiant unique de votre application.
Créer votre première API
Dans Encore Go, tout package avec un point de terminaison //encore:api devient un service :
// hello/hello.go
package hello
import "context"
type Response struct {
Message string `json:"message"`
}
//encore:api public method=GET path=/hello
func Hello(ctx context.Context) (*Response, error) {
return &Response{Message: "Hello, World!"}, nil
}
Exécuter votre application
# Démarrer le serveur de développement
encore run
# Votre API est maintenant disponible sur http://localhost:4000
Ouvrir le tableau de bord local
# Ouvre le tableau de bord de développement local
encore run
# Puis visitez http://localhost:9400
Le tableau de bord affiche :
- Tous vos services et points de terminaison
- Journaux des requêtes/réponses
- Requêtes de base de données
- Traces et spans
Commandes CLI courantes
| Commande | Description |
|---|---|
encore run |
Démarrer le serveur de développement local |
encore test |
Exécuter les tests (utilise go test sous le capot) |
encore db shell <db> |
Ouvrir un shell psql vers une base de données |
encore gen client |
Générer le code client API |
encore app link |
Lier à une application Encore Cloud existante |
Ajouter des paramètres de chemin
type GetUserParams struct {
ID string
}
type User struct {
ID string `json:"id"`
Name string `json:"name"`
}
//encore:api public method=GET path=/users/:id
func GetUser(ctx context.Context, params *GetUserParams) (*User, error) {
return &User{ID: params.ID, Name: "John"}, nil
}
Ajouter une base de données
// db.go
package hello
import "encore.dev/storage/sqldb"
var db = sqldb.NewDatabase("mydb", sqldb.DatabaseConfig{
Migrations: "./migrations",
})
Créer une migration :
-- hello/migrations/1_create_table.up.sql
CREATE TABLE items (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL
);
Interroger la base de données
import "encore.dev/storage/sqldb"
type Item struct {
ID int
Name string
}
func getItem(ctx context.Context, id int) (*Item, error) {
item, err := sqldb.QueryRow[Item](ctx, db, `
SELECT id, name FROM items WHERE id = $1
`, id)
if err != nil {
return nil, err
}
return item, nil
}
Prochaines étapes
- Ajouter d'autres points de terminaison (voir la skill
encore-go-api) - Ajouter l'authentification (voir la skill
encore-go-auth) - Ajouter une infrastructure comme Pub/Sub, des tâches cron (voir la skill
encore-go-infrastructure) - Déployer sur Encore Cloud :
encore app linkpuisgit push encore