Another big issue is that it forces the client to understand a lot about how your application works. While an API can abstract that and conveniently offer various computed properties which output what the client needs.
The added benefit is that you can use the same schema for your client and server.
There's a nice guide to setting up a whole system here: https://www.graphile.org/postgraphile/postgresql-schema-desi...
EDIT: And "Just point Postgrest at your PostreSQL database" is rarely a good idea in my experience, I usually have (versioned) API-schemas containing views, so that I can change my underlying data schema at will without borking the API.
If it was really feasible to bind our databases directly to our APIs, we wouldn't need to hire anyone except DBAs and front-end developers. But backend business logic is a thing. You may not need it, but most people do.
In general, custom business logic can be done through stored procedures/views/computed columns.
You can do a lot in the database, a lot more than most developers realise, that doesn't mean it's a good idea.
However GraphQL resolvers can do much more beyond a simple DB query. E.g. you can call other services and combine their reponses. Or calculate the n-th digit of Pi. Or whatever you want to do.
See https://postgrest.org/en/v5.0/api.html#stored-procedures for more details.
Also have to mention that when using PostgREST we encourage you to decouple your data schema(where your tables are) from your api schema(only views, stored procedures, computed columns), that way you can version your schemas(having "v1" schema, "v2", etc) and prevent breaking changes.