DEV Community

Cover image for Bruno: Design-First Alternative für API Entwicklung?
Emre Demir
Emre Demir

Posted on • Originally published at apidog.com

Bruno: Design-First Alternative für API Entwicklung?

Ist Bruno „Request-first“? Ja. Bruno ist darauf ausgelegt, HTTP-Anfragen zu erstellen, zu organisieren, zu versenden und als .bru-Dateien in Git zu versionieren. Das ist schnell, lokal nutzbar und besonders hilfreich, wenn Sie eine bereits existierende API erkunden oder testen.

Teste Apidog noch heute

„Request-first“ und „Design-first“ lösen jedoch unterschiedliche Probleme. Request-first beantwortet: Wie rufe ich diesen Endpunkt auf? Design-first beantwortet: Wie soll dieser Endpunkt aussehen, bevor jemand ihn implementiert? Genau diese Lücke wird relevant, sobald mehrere Teams eine neue oder gemeinsam genutzte API planen.

Request-first vs. Design-first, kurz erklärt

Dimension Request-first (Bruno) Design-first (OpenAPI-nativ)
Start-Artefakt Eine ausführbare Anfrage Ein Vertrag, meist eine OpenAPI-Spezifikation
Am besten geeignet für Erkunden und Testen bestehender APIs Entwerfen neuer oder gemeinsamer APIs vor dem Code
Quelle der Wahrheit Sammlung von Anfragen Spezifikation
Review-Zeitpunkt Nachdem Endpunkte existieren Bevor Server-Code geschrieben wird
Design-Oberfläche Standardmäßig keine Visueller Designer und Schema-Editor
Drift-Risiko Sammlung kann hinter der echten API zurückbleiben Spezifikation bleibt der Vertrag
Git-Aspekt Stark durch Klartext-.bru-Dateien Stark, wenn die Spezifikation mit Git synchronisiert wird

Die Wahl hängt weniger vom Tool-Geschmack ab, sondern davon, in welcher Phase sich Ihre API befindet.

Brunos Request-first-Modell praktisch einordnen

Bruno speichert Anfragen als Klartext-.bru-Dateien in einem lokalen Ordner. Es gibt kein obligatorisches Cloud-Konto, keine proprietäre Synchronisation und keine erzwungene Plattformbindung. Für Teams, die ihren API-Client wie normalen Code behandeln möchten, ist das ein klarer Vorteil und ein Grund, warum viele Teams einen Git-nativen API-Workflow bevorzugen.

Bruno passt besonders gut, wenn Sie:

  • eine bestehende API explorieren,
  • Requests schnell ausführen und Antworten prüfen,
  • Umgebungen, Pre-Request-Skripte, Post-Request-Skripte und Assertions nutzen,
  • API-Requests zusammen mit Code in Git versionieren,
  • ein lokal-first Tool ohne Vendor Lock-in verwenden möchten.

Ein typischer Request-first-Workflow sieht so aus:

1. Collection anlegen
2. Request hinzufügen
3. Environment-Variablen definieren
4. Request ausführen
5. Response prüfen
6. Assertion oder Script ergänzen
7. .bru-Dateien committen
Enter fullscreen mode Exit fullscreen mode

Beispielhaft ist Bruno stark, wenn Sie eine vorhandene API validieren:

GET https://api.example.com/users/123
Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

Danach prüfen Sie Response-Felder, Statuscodes oder Header. Für Konsum und Verifikation bestehender APIs ist das oft der direkteste Weg. Diese Stärke wurde auch in dieser Bruno-Alternativanalyse beschrieben.

Wo Request-first an Grenzen stößt

Die Grenzen werden sichtbar, sobald die API noch nicht existiert oder mehrere Teams sich auf einen Vertrag einigen müssen.

1. Kein zentrales Designmodell

Request-first-Tools beschreiben Endpunkte über konkrete Anfragen. Das ist praktisch zum Testen, aber weniger geeignet, um Ressourcen, Schemas, Fehlerformate und Response-Strukturen vorab gemeinsam zu modellieren.

Eine Anfrage zeigt zum Beispiel:

{
  "name": "Max",
  "email": "max@example.com"
}
Enter fullscreen mode Exit fullscreen mode

Ein Vertrag definiert dagegen explizit:

UserCreateRequest:
  type: object
  required:
    - name
    - email
  properties:
    name:
      type: string
    email:
      type: string
      format: email
Enter fullscreen mode Exit fullscreen mode

Das zweite Format ist besser für Reviews, Validierung, Dokumentation und spätere Codegenerierung geeignet.

2. Vertragsdrift

Wenn die Collection die Quelle der Wahrheit ist, zeigt sie nur, was getestet oder aufgerufen wurde. Die echte API kann sich ändern:

  • ein Feld wird hinzugefügt,
  • ein Parameter wird entfernt,
  • Validierung wird verschärft,
  • ein Statuscode ändert sich,
  • ein Response-Schema driftet ab.

Ohne zentralen Vertrag fällt das oft erst auf, wenn ein Test fehlschlägt oder ein Client bricht.

3. Schwierigeres Review vor der Implementierung

Ein Ordner mit Requests zeigt, wie ein Endpunkt aufgerufen wird. Er ersetzt aber kein sauberes deklaratives API-Design, das Produkt, Backend und Frontend vor der Implementierung prüfen können.

Für Design-Reviews ist eine OpenAPI-Spezifikation meist klarer:

paths:
  /users:
    post:
      summary: Create user
      requestBody:
        required: true
      responses:
        "201":
          description: User created
        "400":
          description: Invalid input
Enter fullscreen mode Exit fullscreen mode

Das macht Diskussionen über Vertragsdetails möglich, bevor Server-Code geschrieben wird.

Wann Design-first gewinnt

Design-first ist besonders sinnvoll, wenn die API ein gemeinsamer Vertrag ist.

Greenfield-APIs

Wenn noch keine Implementierung existiert, ist die Spezifikation das Design. Sie definieren Ressourcen, Schemas und Fehlerformate zuerst und leiten daraus Mocks, Dokumentation oder Server-Stubs ab.

Praktischer Ablauf:

1. OpenAPI-Spezifikation erstellen
2. Endpunkte und Schemas reviewen
3. Mock-Server bereitstellen
4. Frontend gegen Mock entwickeln
5. Backend gegen Spezifikation implementieren
6. Tests gegen Vertrag ausführen
Enter fullscreen mode Exit fullscreen mode

Teamübergreifende APIs

Wenn Backend- und Client-Teams parallel arbeiten, wird die OpenAPI-Spezifikation zur Vereinbarung. Das Frontend kann gegen einen Mock starten, sobald der Vertrag freigegeben ist, ohne auf produktive Endpunkte zu warten.

Öffentliche APIs

Bei öffentlichen APIs sind Stabilität, Dokumentation und Versionierung Teil des Produkts. Eine gepflegte Spezifikation hilft bei:

  • generierter Referenzdokumentation,
  • konsistenten Schemas,
  • nachvollziehbaren Änderungen,
  • bewusster Kommunikation von Breaking Changes.

Design-first gewinnt also dann, wenn Einigung vor Code wichtiger ist als schnelles Testen nach der Veröffentlichung.

Apidog: Design-first plus Spec-First-Modus

Apidog ist Design-first ausgerichtet, ohne den Git-nativen Ansatz aufzugeben. Der relevante Unterschied: Die OpenAPI-Spezifikation kann selbst zur Quelle der Wahrheit werden.

In Apidog können Sie auf zwei Arten am selben API-Vertrag arbeiten:

  1. Visueller Designer

    Endpunkte, Request-Schemas, Response-Schemas und wiederverwendbare Komponenten lassen sich über eine Oberfläche definieren.

  2. Spec-First-Modus

    Sie bearbeiten das OpenAPI-Dokument direkt im Code-Editor. Die Spezifikation bleibt die Quelle der Wahrheit.

Beide Modi bleiben synchron. Ein Backend-Engineer kann direkt im OpenAPI-Dokument arbeiten, während ein Product- oder Frontend-Engineer dieselbe API visuell prüft.

Der Spec-First-Modus unterstützt außerdem bidirektionale Git-Synchronisation. Dadurch liegt die Spezifikation als echte Datei im Repository, Änderungen laufen über Pull Requests, und Reviews finden im gleichen Prozess statt wie Code-Reviews.

Weitere Details stehen in der Dokumentation zum Spec-First-Modus.

Das Ergebnis ist ein kombinierter Workflow:

Design-first:
OpenAPI-Vertrag definieren → reviewen → mocken → implementieren

Request-first:
Live-Endpunkte ausführen → testen → validieren → iterieren
Enter fullscreen mode Exit fullscreen mode

Mehr Kontext dazu gibt es in Spec-first vs. Design-first in Apidog.

Entscheidung nach Teamreife

Wählen Sie das Tool nach dem API-Lebenszyklus, nicht nach einer abstrakten Präferenz.

Einzelner Entwickler oder kleines Team

Wenn Sie hauptsächlich bestehende APIs konsumieren, reicht Request-first oft aus. Bruno ist lokal, Git-freundlich und schnell.

Wachsendes Team mit eigenen APIs

Sobald ein zweites Team von Ihren Endpunkten abhängt, wird ein expliziter Vertrag wertvoll. Eine Collection allein skaliert dann schlechter, weil Reviews, Mocks und Vertragsprüfungen fehlen.

Reife Organisation mit vielen internen oder öffentlichen APIs

Bei vielen APIs wird Design-first praktisch notwendig. Die Spezifikation dient gleichzeitig als:

  • Vertrag,
  • Dokumentation,
  • Governance-Grundlage,
  • Onboarding-Hilfe,
  • Basis für Mocks und Tests.

Die ehrliche Einordnung lautet: Bruno ist stark für Request-first. Design-first wird wichtig, sobald APIs nicht nur getestet, sondern vorab als Verträge entworfen und abgestimmt werden müssen.

FAQ

Ist Bruno Request-first oder Design-first?

Bruno ist Request-first. Das Kernmodell besteht darin, HTTP-Anfragen zu erstellen, zu organisieren, zu versenden und als Klartextdateien zu versionieren. Das ist ideal zum Erkunden und Testen bestehender APIs.

Kann ich Design-first-Arbeit in Bruno erledigen?

Nicht nativ in dem Sinn, wie es ein spezifikationszentriertes Tool tut. Bruno fokussiert sich auf Requests, nicht auf einen OpenAPI-Vertrag als primäre Quelle der Wahrheit.

Muss ich Git-Freundlichkeit aufgeben, wenn ich Design-first arbeite?

Nein. Git-native Workflows können auch auf die OpenAPI-Spezifikation angewendet werden. Im Spec-First-Modus von Apidog liegt das OpenAPI-Dokument im Repository und kann über Pull Requests überprüft werden.

Top comments (0)