обязательно ли отдавать JSON и ответы сервера 200, 204, 404Полиция REST вас не арестует, конечно. Но это общепринятые соглашения. Потому что...
будет ли это считаться REST Api...скорее всего - нет. Потому что вы будете отдавать данные, смешанные с представлением. И чтобы, получив список сущностей, фронтенд мог запросить по одной из них детальную информацию, ему нужно будет сначала из вёрстки выковырять её идентификатор.
Пересмотрел огромное количество примеров, но не нашел единого подхода к передаче связей в REST API.Это потому, что его нет.
К примеру, как лучше {"categoryId": 1} или {"category": {"id": 1}}?Как вам нравится, так и лучше.
Я думаю это вообще неудобно, так как форма должен быть единым.Тогда не делайте так, вас никто не заставляет.
Кто как решает эти проблемы?Вы забыли проблемы указать. В вопросе кроме "мне вот так не нравится" ничего нет.
Пока склоняюсь к обычному 200 но в теле передавать свой статус: "success" или "error" с сообщением объясняющем причину ошибки. Ну а на стороне php разбирать тело ответа и принимать решение что делать дальше.Многие разработчики апи (включая меня) так и поступают.
Собсна вопрос: нужно комбинировать rest и сокеты, или переходить исключительно на сокеты?Собсна, как хотите, так и делайте: REST-полиции и Socket-наци не существует. Принципиально REST API от API на сокетах ничем не отличается (разумеется, я не включаю в это определение пуш данных с сервера). Когда вам на клиенте нужны какие-то данные, вы должны их запросить. А будете вы их получать через ajax или через сокеты совершенно неважно. У меня есть проекты, в которых комбинации самые разные: от чистого REST до чистых сокетов и всё, что посередине.