encore-go-getting-started

Par encoredev · skills

Prenez en main Encore Go.

npx skills add https://github.com/encoredev/skills --skill encore-go-getting-started

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 link puis git push encore

Skills similaires