REST
One of the key concepts in REST is the separation of concerns. This idea will be familiar to you as a C# programmer. Here, we are separating the concerns of the server and the client.
The API can only respond to calls from the client, and cannot generate calls of its own. Note that within the logic of the API implementation, it is possible to call other APIs, but not back to the client.
The server is in no way dependent on the design or implementation of the client.
Client/server
The key to a REST application is that the API can be called by any type of client: web application, phone application, and so on. Further, the client can be located anywhere and there are no constraints on the architecture of the client.
The same is true for the backend, behind the API. Typically, this will be a database, but it can be any type of data storage: relational, object, in memory, and so on.
One way to accomplish this, is to use the standard web protocols such as GET
, PUT
...