Referencia de API
Todo lo que hace la interfaz web de omegaUp, lo hace llamando a la misma API REST pública que usted
Puedes llamarte a ti mismo. Cada página de la Arena, cada actualización del marcador, cada envío es
una solicitud HTTP a /api/..., por lo que no hay nada que la interfaz de usuario pueda hacer que la API no pueda.
Dónde reside la referencia punto por punto
Esta página documenta las reglas transversales que se aplican a cada llamada: transporte, autenticación y sobre de respuesta. Deliberadamente no enumerar puntos finales individuales, porque esa lista se genera a partir del código fuente y Se pudriría en el momento en que fuera copiado aquí a mano.
La superficie autoritaria y siempre actual se genera mediante
frontend/server/cmd/APITool.php
- la misma herramienta que emite el cliente frontend escrito
api.ts
y api_types.ts.
Para ver exactamente lo que un controlador acepta y devuelve, lea el controlador en
frontend/server/src/Controllers/
(cada método apiXxx es un punto final) o sus documentos generados, en lugar de un
mesa mantenida a mano.
Las reglas que se aplican a cada llamada.
Es HTTP simple, GET o POST, JSON back. Cada punto final se invoca con un comando normal. Solicitud HTTP y devuelve un estado HTTP apropiado más un cuerpo JSON. Llamadas de solo lectura que No se necesitan privilegios, se puede crear con un GET: literalmente puedes pegar la URL en un navegador. y ver el JSON.
Solo HTTPS: HTTP se rechaza, no se degrada silenciosamente. Porque omegaUp se preocupa por mantener la privacidad de los datos de los usuarios y evitar trampas (alguien husmeando el tráfico del concurso es un amenaza real, no hipotética), la API se sirve exclusivamente a través de HTTPS. una llamada terminada HTTP simple no funciona silenciosamente: el servidor responde con una redirección permanente HTTP 301 a la URL segura, y un cliente que no la sigue no obtendrá nada útil.
Cada URL comienza con el mismo prefijo. Todos los puntos finales se encuentran bajo
https://omegaup.com/api/; el resto de la ruta selecciona el controlador y el método. Por
Por convención nombramos los puntos finales por lo que viene después de ese prefijo, por lo que un punto final escrito
aquí como time/get es realmente https://omegaup.com/api/time/get/.
La autenticación es un token en una cookie llamada ouat. La mayoría de las llamadas no necesitan especial
privilegio, pero los que actúan en su cuenta requieren que inicie sesión.
llamando al user/login, tome el auth_token que devuelve y envíelo en cada sesión posterior.
llamar como una cookie denominada ouat (token de autenticación omegaUp). Una consecuencia importante, nuevamente
impulsado por anti-trampas: solo puedes tener una sesión activa a la vez. Si inicias sesión
mediante programación invalidas la sesión de tu navegador y viceversa.
El sobre de respuesta
Cada respuesta es JSON y lleva un campo status. En caso de éxito es "ok"; en el fracaso
es "error" y el cuerpo también lleva un errorcode legible por máquina, un estable
errorname, y un mensaje error localizado legible por humanos adecuado para mostrar a un
usuario en su propio idioma. Maneje las fallas ramificándose en status/errorname, nunca por
coincidencia en el texto error legible por humanos: ese texto se traduce y cambiará.
Un ejemplo trabajado
La llamada más simple posible recupera el reloj del servidor, lo cual es útil para corregir un reloj local que puede estar sesgado:
$ curl https://omegaup.com/api/time/get/
{"time":1436577101,"status":"ok"}
ouat, el estado es HTTP 200 OK y
time es una marca de tiempo UNIX directamente del reloj interno del servidor.
Ver también
- Enlaces útiles: repositorios, guías de contribución y archivos generados automáticamente. documentos del controlador.
- System Internals — cómo llama una API a
run/createen realidad fluye a través de\OmegaUp\ApiCallerhacia un controlador y luego al calificador.