Så skriver du ett mermaid-sekvensdiagram
Ett sekvensdiagram visar vem som pratar med vem, i vilken ordning. I mermaid tar det ungefär lika lång tid att skriva som att beskriva högt, vilket är varför det är diagramtypen som överlever längst i en kodbas. Allt nedan är redo att kopieras rakt in i editorn.
Det minsta som behövs
Deklarera diagramtypen, skriv sedan en rad per meddelande. Deltagare skapas vid första omnämnandet, i den ordning de dyker upp.
sequenceDiagram
User->>API: POST /orders
API->>DB: INSERT order
DB-->>API: order id
API-->>User: 201 CreatedDeklarera deltagare explicit med participant User när du vill ha en specifik vänster-till-höger-ordning istället för ordningen de först nämns i.
Piltyper
| Syntax | Betydelse |
|---|---|
A->>B: text | Förfrågan — heldragen linje, fylld pilspets |
A-->>B: text | Svar — streckad linje, fylld pilspets |
A->B: text | Heldragen linje, öppen pilspets |
A-)B: text | Asynkront meddelande — öppen pilspets, inget svar förväntas |
A-xB: text | Meddelande som misslyckas eller tappas |
Konventionen värd att behålla: heldragen för anropet, streckad för returen. En läsare kan då avgöra en förfrågan från ett svar utan att läsa en enda etikett.
Deltagare och alias
sequenceDiagram
participant U as Browser
participant A as API gateway
participant S as Order service
U->>A: GET /orders
A->>S: list(userId)
S-->>A: orders
A-->>U: 200 OKAnvänd actor U as Browser istället för participant för att rita en streckgubbe — värt det för personen i vänsterkanten av ett autentiseringsflöde.
Aktiveringsstaplar
Aktiveringsstaplar visar hur länge en deltagare är upptagen. Markera dem antingen explicit med activate/deactivate, eller lägg till + och - på pilarna, vilket är kortare och svårare att få i obalans.
sequenceDiagram
User->>+API: POST /pay
API->>+Bank: charge
Bank-->>-API: authorised
API-->>-User: receiptLoopar, villkor och parallellt arbete
sequenceDiagram
User->>API: POST /import
loop every row
API->>DB: upsert row
end
alt all rows valid
API-->>User: 200 OK
else some failed
API-->>User: 422 with errors
end
par notify
API->>Email: send summary
and audit
API->>Log: write entry
endloop <label>…end— upprepning.alt <label>…else <label>…end— ömsesidigt uteslutande grenar.opt <label>…end— en gren som kanske helt enkelt inte inträffar.par <label>…and <label>…end— saker som händer samtidigt.critical/break— ett avsnitt som inte får avbrytas, och en tidig utgång.
Anteckningar
sequenceDiagram
User->>API: POST /login
Note right of API: Rate limited<br>5 per minute
API-->>User: token
Note over User,API: Token is valid for 30 daysNote over A,B spänner över två deltagare och är rätt plats för ett villkor som hör till interaktionen snarare än till någon av sidorna.
Ett fullständigt exempel
sequenceDiagram
actor U as User
participant A as App
participant P as Provider
U->>+A: Click "Sign in"
A-->>-U: Redirect to provider
U->>+P: Authorise
P-->>-U: Redirect back with code
U->>+A: GET /callback?code=…
A->>+P: Exchange code for token
P-->>-A: access token
Note right of A: Session cookie set here
A-->>-U: Signed inRedigera det här diagrammet
Klistra in det i kodfliken och ändra en rad — förhandsgranskningen ritas om medan du skriver.
Vanliga frågor
Hur numrerar jag meddelandena?
Sätt autonumber på raden direkt efter sequenceDiagram. Varje meddelande får då ett löpnummer, vilket gör ett diagram mycket lättare att prata om i granskningskommentarer.
Kan en deltagare skicka ett meddelande till sig själv?
Ja — skriv samma namn på båda sidor: API->>API: retry. Mermaid ritar loopen tillbaka in i samma livslinje.
Hur visar jag att en deltagare förstörs?
Använd destroy <name> före meddelandet som avslutar den, eller create participant <name> för att låta den dyka upp mitt i diagrammet istället för högst upp.
Kan jag redigera ett sekvensdiagram på den visuella canvasen?
Den visuella canvasen redigerar flödesdiagram. Sekvensdiagram skrivs på kodfliken, där de renderas direkt i förhandsgranskningen — vilket oftast är snabbare ändå, eftersom ett sekvensdiagram i grunden är en lista med rader.