Another simple approach (if you only need to read public data) I used on one site is to simply return JSON from your templates. It was really straight-forward and was close to working with normal templates. You can then use the URLs / routing provided by Kirby as your custom API.
Some sample code:
<?php
$data = [
'text' => $page->text()->kirbytext()->value(),
'title' => $page->title()->value(),
'uid' => $page->uid()
];
// set response content type to `application/json`
$kirby->response()->json();
echo json_encode($data);
Edit: This Vue starterkit mentioned by @texnixe in this thread seems to use the same idea.