There are six constraints which the system or application should meet in order to qualify as RESTful. All of them actually play
very well by the rules of the microservice architecture.
• Uniform Interface: it does not matter who is the client, the requests look the same.
• Separation of the client and the server : servers and clients act independently (separation of concerns).
• Statelessness : no client-specific context is being stored on the server between requests and each request from any client
contains all the information necessary to be serviced.
• Cacheable : clients and intermediaries can cache responses, whereas responses implicitly or explicitly define themselves as
cacheable or not to prevent clients from getting stale data.
• Layered system : a client cannot ordinarily tell whether it is connected directly to the end server or to an intermediary along
the way.
• Code on demand (optional): servers can temporarily extend or customize the functionality of a client by transferring executable code (usually some kind of scripts)
https://www.geeksforgeeks.org/rest-api-architectural-constraints/