%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrlayer-scrpage}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

% Mehrere Spalten
\usepackage{multicol}

% UML-Diagramme
\usepackage{tikz-uml}


%Kopfzeile
\ihead{JavaScript}
\chead{}
\ohead{https://kohnlehome.de/js/json-server.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
  \LARGE % Schriftgröße
  \bfseries % Fettdruck
  \sffamily % Serifenlose Schrift
  JSON Server
\end{center}

\noindent
REST-API mit Node.js mit einer JSON-Datei als Datenquelle.

\section*{Ressourcen}
\begin{itemize}
  \item \href{https://github.com/typicode/json-server}{github.com/typicode/json-server}
  \item \href{https://codeberg.org/meisterk/json-server-example}{codeberg.org/meisterk/json-server-example}
\end{itemize}

\section*{Installation}
\begin{verbatim}
npm install json-server
\end{verbatim}

\section*{Datenquelle: db.json}
\begin{verbatim}
{
  "classes": [
    { "id": 1, "name": "T1A" },
    { "id": 2, "name": "T2A" }
  ],

  "students": [
    { "id": 1, "classId": 1, "firstName": "Anna",  "lastName": "Arm"  },
    { "id": 2, "classId": 1, "firstName": "Berta", "lastName": "Bein" },
    { "id": 3, "classId": 2, "firstName": "Carla", "lastName": "Copf" }
  ]
}
\end{verbatim}

\section*{Routen: routes.json}
\begin{verbatim}
{
  "/api": "/$1",
  "/classes/:classId/students": "/students/classId=:classId"
}
\end{verbatim}

\section*{Server starten}
\begin{verbatim}
json-server --watch db.json
\end{verbatim}

\section*{Endpunkte}
\begin{verbatim}
GET http://localhost:3000/classes
                         /classes/2
                         /students
                         /students?firstname=Anna&lastName=Arm
                         /students?firstname_like=r
                         /students?_expand=class
                         /students?classid=1
                         /classe/1/students

\end{verbatim}


\end{document}
