Graphql is a query language that allows to retrieve only the information defined by the user, avoiding underfetching or overfetching and providing certainty about having all the required data. In a Graphql server, clients use one single endpoint, hiding complexity and logic of the backend, allowing it to connect with different backends or databases, without changing the client's logic when switching between them.