Referencia API
API de Películas
API REST para consultar y gestionar una colección de películas con datos como título, descripción, año, género, calificación e imagen de portada.
Métodos disponibles:
GET,
POST,
PUT y
DELETE.
Base URL
https://devsapihub.com/api-movies
Puedes consumir esta API con cualquier cliente HTTP o directamente desde el navegador.
Endpoints
Listar películas
GET /api-movies
GET
Retorna un array con todas las películas disponibles.
Obtener película por ID
GET /api-movies/:id
GET
Retorna una película según el identificador enviado en la ruta.
GET /api-movies/1
Listar películas con límite
GET /api-movies/limit/:limit
GET
Retorna un array limitado por el parámetro limit. Si el valor excede la cantidad disponible, devuelve solo los registros existentes.
GET /api-movies/limit/2
Ejemplo de respuesta:
[
{
"id": 1,
"title": "The Shawshank Redemption",
"description": "Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.",
"year": 1994,
"image_url": "https://devsapihub.com/img-movies/1.jpg",
"genre": "Drama",
"stars": 5.0
},
{
"id": 2,
"title": "Jumanji",
"description": "In Jumanji: The Next Level, the gang is back but the game has changed.",
"year": 2019,
"image_url": "https://devsapihub.com/img-movies/2.jpg",
"genre": "Adventure",
"stars": 3.4
}
]
Filtrar películas por género (uno o varios)
GET /api-movies/genre/:genre
GET
Retorna películas del género indicado en la ruta. También admite varios géneros separándolos por coma (sin espacios). La comparación no distingue mayúsculas/minúsculas.
Un solo género:
GET /api-movies/genre/Action
Varios géneros (separados por coma):
GET /api-movies/genre/Drama,Crime
Si no hay coincidencias, la API responde con error 404.
Si no envías ningún género válido, responde con 400.
Filtrar películas por varios géneros (body JSON)
POST /api-movies/genres
POST
Recibe un array de géneros en el body JSON. Devuelve todas las películas cuyo género coincida con cualquiera de los enviados (operación OR).
Body JSON requerido:
{
"genres": ["Drama", "Crime"]
}
Si genres no es un array válido, la API responde con
400. Si no hay coincidencias, responde con
404.
Filtrar películas por estrellas
GET /api-movies/stars/:stars
GET
Retorna películas con la calificación solicitada.
GET /api-movies/stars/5
Si no hay coincidencias, la API responde con error 404.
Crear película
POST /api-movies/movie
POST
Body JSON requerido:
{
"title": "El Código del Silencio",
"description": "Un thriller tecnológico donde un joven hacker descubre una red secreta que controla los datos de millones de personas.",
"year": 2023,
"image_url": "https://devsapihub.com/img-movies/codigo-del-silencio.jpg",
"genre": "Action",
"stars": 4
}
Respuesta: recurso creado y listado actualizado en GET /api-movies.
Actualizar película
PUT /api-movies/movie/:id
PUT
Ejemplo de consulta previa:
GET /api-movies/movie/2
Body JSON de actualización:
{
"id": 2,
"title": "Jumanji 2",
"description": "In Jumanji: The Next Level, the gang is back but the game has changed.",
"year": 2019,
"image_url": "https://devsapihub.com/img-movies/2.jpg",
"genre": "Adventure",
"stars": 4
}
Respuesta: recurso actualizado con los nuevos valores.
Eliminar película
DELETE /api-movies/movie/:id
DELETE
Elimina el recurso correspondiente al ID indicado.
DELETE /api-movies/3
Respuesta: listado actualizado consultable en GET /api-movies.
Filtrar películas por año
GET /api-movies/year/:year
GET
Retorna películas correspondientes al año indicado.
GET /api-movies/year/2023
Si no hay coincidencias, la API responde con error 404.
Ejemplos de consumo
# Listar todas las películas
curl -X GET "https://devsapihub.com/api-movies"
# Obtener una película por ID
curl -X GET "https://devsapihub.com/api-movies/1"
# Filtrar por un solo género
curl -X GET "https://devsapihub.com/api-movies/genre/Drama"
# Filtrar por varios géneros separados por coma
curl -X GET "https://devsapihub.com/api-movies/genre/Drama,Crime"
# Filtrar por varios géneros enviando un array en el body JSON
curl -X POST "https://devsapihub.com/api-movies/genres" \
-H "Content-Type: application/json" \
-d '{"genres":["Drama","Crime"]}'
# Crear una nueva película
curl -X POST "https://devsapihub.com/api-movies/movie" \
-H "Content-Type: application/json" \
-d '{
"title": "El Código del Silencio",
"description": "Un thriller tecnológico.",
"year": 2023,
"image_url": "https://devsapihub.com/img-movies/codigo-del-silencio.jpg",
"genre": "Action",
"stars": 4
}'
const getMovies = async () => {
try {
const res = await fetch("https://devsapihub.com/api-movies");
const data = await res.json();
if (!res.ok) {
throw new Error("Error en la respuesta de la API");
}
console.log(data);
} catch (error) {
console.error("Error al obtener las películas:", error.message);
}
};
getMovies();
import requests
response = requests.get("https://devsapihub.com/api-movies")
print(response.json())
import axios from "axios";
const getMovies = async () => {
try {
const res = await axios.get("https://devsapihub.com/api-movies");
console.log(res.data);
} catch (error) {
console.error("Error al obtener las películas:", error.message);
}
};
getMovies();
import { useEffect, useState } from 'react';
export default function App() {
const [movies, setMovies] = useState([]);
useEffect(() => {
const getMovies = async () => {
try {
const resp = await fetch('https://devsapihub.com/api-movies');
const data = await resp.json();
setMovies(data);
} catch (error) {
console.error(error);
}
};
getMovies();
}, []);
return (
<>
<h1>Películas</h1>
{movies.map((movie) => (
<div key={movie.id}>
<img
src={movie.image_url}
alt={movie.title}
style={{ width: '200px', height: '300px' }}
/>
<h3>{movie.title}</h3>
<p>{movie.description}</p>
<p><strong>Género:</strong> {movie.genre}</p>
<p>Estrellas: {movie.stars}</p>
</div>
))}
</>
);
}
<?php
$response = @file_get_contents('https://devsapihub.com/api-movies');
$data = json_decode($response, true);
echo '<pre>';
echo $data ? print_r($data, true) : 'Error al obtener o decodificar los datos.';
echo '</pre>';
?>
Demo de interfaz
Ejemplo práctico de una vista de películas conectada a datos de API.
Explorar en CodePen