Почему php не видит post?
потому что данных нет в $_POST.
вопрос задавался 100500 раз и ответ на него легко находится.
как пример – https://www.geeksforgeeks.org/how-to-receive-json-...
Потому что $_POST заполняется при использовании Content-Type: multipart/form-data. Вы используете application/json, значит данные надо считывать самостоятельно.
$json = file_get_contents('php://input');
$data = json_decode($json, true);