# API REST

> El estilo de API web más común: cada cosa tiene una URL y la manejás con verbos HTTP.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/rest-api/
- En inglés: [REST API](https://tidbit.legios.com.ar/rest-api/)

Una **API REST** es una API diseñada alrededor de una idea simple: todo lo que el sistema conoce es un **recurso** con su propia URL, y usás los verbos estándar de HTTP para actuar sobre él. `GET /orders/42` lee el pedido 42, `POST /orders` crea uno nuevo, `PUT /orders/42` lo reemplaza y `DELETE /orders/42` lo borra. La respuesta suele volver en JSON.

El estilo lo describió Roy Fielding en su tesis doctoral del año 2000, y el nombre viene de **REpresentational State Transfer** (transferencia de estado representacional). Una de sus reglas es que cada pedido es **stateless** (sin estado): trae todo lo que el servidor necesita para responder, así que el servidor no tiene que acordarse de pedidos anteriores. Eso hace que las APIs REST sean fáciles de repartir entre muchos servidores y de cachear.

Cada respuesta trae además un **código de estado**, un número de tres cifras que dice cómo salió: 200 es OK, 201 creado, 404 no encontrado, 401 no iniciaste sesión, 500 falló el servidor. Como reusa lo que la web ya tiene, REST se volvió la forma por defecto en que apps, sitios y empresas se hablan entre sí. Cuando alguien dice "la API de Stripe" o "la API de GitHub", casi siempre habla de una API REST.

## Una analogía

Como una biblioteca bien ordenada donde cada libro tiene una dirección fija en el estante y hay pocas acciones permitidas: mirarlo, agregar uno, reemplazarlo, sacarlo. Cualquiera que sepa las reglas se orienta.

## Para quedarse

- Cada cosa tiene una URL; el verbo HTTP dice qué hacer con ella.
- GET lee, POST crea, PUT o PATCH actualizan, DELETE borra.
- Los pedidos son stateless: cada uno se sostiene solo.
- Códigos de estado como 200, 404 y 500 te dicen cómo salió.

## Para seguir leyendo

- [¿Qué es una API RESTful? (AWS)](https://aws.amazon.com/es/what-is/restful-api/)
- [REST (glosario de MDN)](https://developer.mozilla.org/es/docs/Glossary/REST)
- [Transferencia de Estado Representacional en Wikipedia](https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional)

## Términos relacionados

- [API](https://tidbit.legios.com.ar/es/api/): El menú de cosas que un programa le deja pedir a otro programa.
- [URL](https://tidbit.legios.com.ar/es/url/): La dirección completa de algo en la web: protocolo, sitio y ruta.
- [HTTP](https://tidbit.legios.com.ar/es/http/): El idioma de pedido y respuesta que hablan los navegadores y los sitios web.
- [JSON](https://tidbit.legios.com.ar/es/json/): El formato de texto con el que los programas se pasan datos estructurados.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Stripe](https://tidbit.legios.com.ar/es/stripe/): Una empresa que deja que sitios y apps cobren online con unas pocas líneas de código.
- [GitHub](https://tidbit.legios.com.ar/es/github/): Un sitio donde los equipos guardan su código con Git y trabajan juntos en él.
