I've done both (assuming you mean the AJAX Api). It just depends on the circumstances.
If I'm doing a very UI intense, JS heavy page I'd probably use the AJAX API and manipulate the DOM myself.
If I'm doing something more standard/simpler I would use DML.
In terms of advantage, I think the ajax API path provides a more responsive UI but it it requires you do all the work in JS in terms of record manipulation which theoretically could open up some holes for malicious users. For instance, we have a page that allows you to add quote items and auto calculates prices and applies uplifts etc, a savy user could modify the calculations in the JS and change the prices. This also means you wont have access to all the Salesforce provided classes.
Doing things on the back end VIA DML is a bit more secure although slower. It also poses some challenges when trying to send data from JS to the controller. There are plenty of workarounds to these challenges that you can find online.
Rest from Apex would be terribly inefficient. I would not recommend this approach.