This document discusses REST (Representational State Transfer) and RESTful APIs. It begins by explaining why REST is often misunderstood and discusses common misconceptions. It then covers the origins and constraints of REST as defined by Roy Fielding, including client-server, stateless, cache, uniform interface, layered system and code on demand. It also discusses the Richardson Maturity Model and concludes that REST is the best approach when considering long-term maintenance and evolution, despite having a higher start-up cost than other styles.