Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • SecDoc SecDoc
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 36
    • Issues 36
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Releases
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • SecDoc Dokumentationssystem
  • SecDocSecDoc
  • Issues
  • #98
Closed
Open
Created Jul 08, 2021 by Dustin Gawron@d_gawr01Maintainer2 of 6 tasks completed2/6 tasks

API/Backend Rework

Geplant ist zuerst das Backend parallel zur normalen Entwicklung zu überarbeiten, um eine ordentliche API mit Hilfe einer OpenAPI Definition zu planen. Aus der Definition soll das neue Grundgerüst erzeugt werden und vorhandene Funktionen im neuen Grundgerüst eingebaut werden. Sofern möglich kann bisheriger Code umstrukturiert werden, um die Aufteilung und den logischen Aufbau zu verbessern.

Zugehöriger Branch: backend_rework

Vorschläge an Tools:

  • Definition der API mit OpenAPI
  • Erzeugung eines Grundgerüsts im PHP Slim Framework mit Hilfe vom OpenAPI Generator
    • Slim4 Beispiel: https://github.com/odan/slim4-skeleton
  • Automatische Überprüfung von Anfragedaten mit Hilfe von RespectValidation
  • Redoc zur automatischen Erzeugung einer API Dokumentation im GitLab CI/CD Prozess
  • Implementierung von Tests mit PHPUnit und automatischer Ausführung im GitLab CI/CD Prozess
  • Implementierung von API Tests

ToDo:

  • OpenAPI Definition der bisherigen Funktionen bauen und Struktur vereinheitlichen
  • Backend-Template erzeugen
  • Aufbau/Struktur planen
  • Bisherige Funktionen in neue API-Aufrufe übertragen (Refactoring des Codes soweit einfach möglich)
  • API Tests implementieren
  • Umstellung des Frontends auf die neue API

Aufbau/Struktur/Ideen

  • Backend Pfad /api
  • PHP Slim für Grundaufbau
    • Middleware für Authentifizierung?
    • Middleware für CSRF Protection?
    • Middleware für Input Validation?
  • Monolog zum Logging
  • /api/src/utils:
    • Authorization
    • Configuration Management
  • /api/src/db:
    • DBClass
    • Migration
  • Configuration mit Default-Werten + Overwrite-Werten
    • Mapping von Konfigurationsvariablen zu Namen/Beschreibungen (für Anzeige in Oberfläche)
    • Konfiguration in einem Array speichern; Arrays mit array_replace_resurcive() mergen

Workflow für API Änderungen

  1. OpenAPI Definition anpassen (api/secdoc-api.yml)
  2. Definition mit OpenAPI Generator auf Fehler prüfen: openapi-generator-cli validate -i secdoc-api.yml
  3. Slim-Skelett mit OpenAPI Generator aktualisieren: openapi-generator-cli generate -g php-slim4 -i secdoc-api.yml --global-property apis,apiTests=false,supportingFiles
  4. Unter api/src/ die zugehörigen Klassen/Funktionen implementieren
Edited Jan 17, 2022 by Dustin Gawron
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking