REST API
Nuestra API REST ofrece una forma sencilla de interactuar con Potter DB, de acuerdo con las especificaciones JSON:API y OAS. En esta sección, vamos a cubrir los aspectos clave del uso de la API REST, incluyendo los endpoints disponibles y cómo dar formato a tus peticiones y respuestas.
Endpoints disponibles
Para acceder a los datos de la API REST, debe realizar una solicitud GET
a uno de los siguientes puntos finales:
Expanda para ver todos los endpoints
Books
/v1/books
: Recupera una lista de libros./v1/books/{id}
: Recupera un solo libro por su ID./v1/books/{book_id}/chapters
: Recuperar una lista de capÃtulos de un libro determinado./v1/books/{book_id}/chapters/{id}
: Recuperar un capÃtulo de un libro por su ID.
Characters
/v1/characters
: Recupera una lista de personajes./v1/characters/{id}
: Recuperar un único personaje por su ID.
Movies
/v1/movies
: Recupera una lista de pelÃculas./v1/movies/{id}
: Recupera una sola pelÃcula por su ID.
Potions
/v1/potions
: Recupera una lista de pociones./v1/potions/{id}
: Recupera una sola poción por su ID.
Spells
/v1/spells
: Recupera una lista de hechizos./v1/spells/{id}
: Recupera un solo hechizo por su ID.
Los ID deben proporcionarse como UUID o slugs.
Especificaciones OpenAPI (OAS)
Para facilitar la integración, proporcionamos un documento OpenAPI Specification (opens in a new tab) que describe los puntos finales de la API, los modelos de datos y los esquemas de solicitud/respuesta. La API se ajusta a la versión 3.0.3 de la especificación OAS. Puede encontrar nuestro documento OAS actual aquà (opens in a new tab).
Formato JSON:API
Nuestra API REST se adhiere a la especificación JSON:API (opens in a new tab), que proporciona una forma coherente de estructurar las solicitudes y respuestas de la API. He aquà un resumen de las principales caracterÃsticas de JSON:API en el contexto de nuestra API:
- Objetos de recursos: Cada recurso se representa como un objeto con un
tipo
,id
yatributos
. - Relaciones: Los recursos pueden estar relacionados con otros recursos, por ejemplo, un recurso "libro" está relacionado con recursos "capÃtulo" y viceversa.
- Paginación: Cuando una respuesta contiene un gran número de recursos, la respuesta se paginará. Consulte Paginación para obtener más información.
- Errores: Los errores se devuelven con estructuras estandarizadas, lo que facilita la gestión y resolución de problemas.
Realizar peticiones
Para realizar una solicitud a la API REST, debe realizar una solicitud GET
a uno de nuestros endpoints disponibles.
He aquà un ejemplo básico de cómo recuperar una lista de personajes utilizando el endpoint /characters
:
GET https://api.potterdb.com/v1/characters
Consulte el documento "OpenAPI Specification" para obtener información detallada.
Paginación
Las respuestas con un gran número de recursos se paginarán. La respuesta incluirá un objeto links
con enlaces first
, last
, prev
y next
a la primera, última, anterior y siguiente página de resultados respectivamente.
Para cambiar la cantidad de recursos por página, puede utilizar el parámetro de consulta page[size]
(el tamaño máximo es 100):
GET https://api.potterdb.com/v1/characters?page[size]=25
Para cambiar la página actual, puede utilizar el parámetro de consulta page[number]
:
GET https://api.potterdb.com/v1/characters?page[number]=2
Ransack
Nuestra API REST admite el filtrado y la clasificación avanzados mediante Ransack (opens in a new tab).
Filtrado
Puede filtrar recursos añadiendo un parámetro de consulta filter
a su petición. Por ejemplo, para filtrar caracteres por nombre, puede utilizar el predicado name_cont
:
GET https://api.potterdb.com/v1/characters?filter[name_cont]=Weasley
Esto devolverá todos los personajes con el nombre "Weasley".
Ampliar para ver todos los filtros predicados disponibles
eq
: igual aeq_any
: igual a cualquiereq_all
: igual a todosnot_eq
: no es igual anot_eq_any
: no es igual a cualquiernot_eq_all
: no es igual a todosmatches
: coincide conmatches_any
: coincide con cualquiermatches_all
: coincide con todosdoes_not_match
: no coincide condoes_not_match_any
: no coincide con cualquierdoes_not_match_all
: no coincide con todoslt
: menos quelt_any
: menos que cualquierlt_all
: menos que todoslteq
: menos que o igual alteq_any
: menos que o igual a cualquierlteq_all
: menos que o igual a todosgt
: mayor quegt_any
: mayor que cualquiergt_all
: mayor que todosgteq
: mayor que o igual agteq_any
: mayor que o igual a cualquiergteq_all
: mayor que o igual a todosin
: enin_any
: en cualquierin_all
: en todosnot_in
: no ennot_in_any
: no en cualquiernot_in_all
: no en todoscont
: contienecont_any
: contiene cualquiercont_all
: contiene todosnot_cont
: no contienenot_cont_any
: no contiene cualquiernot_cont_all
: no contiene todosstart
: comienza constart_any
: comienza con cualquierstart_all
: comienza con todosnot_start
: no comienza connot_start_any
: no comienza con cualquiernot_start_all
: no comienza con todosend
: termina conend_any
: termina con cualquierend_all
: termina con todosnot_end
: no termina connot_end_any
: no termina con cualquiernot_end_all
: no termina con todos'true'
: es verdadero'false'
: es falsopresent
: está presenteblank
: está en blanco'null'
: es nulonot_null
: no es nulo
Ordenar
Puede ordenar los recursos añadiendo un parámetro de consulta sort
a su petición. Por ejemplo, para ordenar caracteres por nombre, puede utilizar el atributo name
(vaya a Recursos para ver todos los atributos disponibles):
GET https://api.potterdb.com/v1/characters?sort=name
Utilice el prefijo -
para ordenar en orden descendente.