Exemples de code
Exemples d'utilisation de l'API rpicx
GET
/v1/healthVerification de santeVerification de sante du service, retourne le nombre total d'images et l'etat de fonctionnement.
curl 'https://api.rpicx.com/v1/v1/health'<script>
fetch('https://api.rpicx.com/v1/v1/health')
.then(res => res.json())
.then(data => console.log(data))
</script>fetch('https://api.rpicx.com/v1/v1/health')
.then(res => res.json())
.then(data => console.log(data))use reqwest;
use serde_json::Value;
#[tokio::main]
async fn main() -> Result<()> {
let resp: Value = reqwest::Client::new()
.get("https://api.rpicx.com/v1/v1/health")
.send().await?
.json().await?;
println!("{:?}", resp);
Ok(())
}Reponse 200 :
{
"status": "ok",
"image_count": 100000
}GET
/v1/randomObtenir une image aleatoireSelectionne aleatoirement une image et retourne une redirection 302.
curl 'https://api.rpicx.com/v1/v1/random'<img src="https://api.rpicx.com/v1/v1/random" alt="Random image" />fetch('https://api.rpicx.com/v1/random')
.then(res => res.blob())
.then(blob => {
const img = document.createElement('img')
img.src = URL.createObjectURL(blob)
document.body.appendChild(img)
})use reqwest;
#[tokio::main]
async fn main() -> Result<()> {
let resp = reqwest::get("https://api.rpicx.com/v1/random").await?;
let bytes = resp.bytes().await?;
println!("Downloaded {} bytes", bytes.len());
Ok(())
}Succes (302) :
Location: {siteConfig.image_url}/xxx.webpGET
/v1/categoriesObtenir les categoriesRetourne le nombre total d'images. Index plat, categories est toujours vide.
curl 'https://api.rpicx.com/v1/v1/categories'<script>
fetch('https://api.rpicx.com/v1/v1/categories')
.then(res => res.json())
.then(data => console.log(data))
</script>fetch('https://api.rpicx.com/v1/v1/categories')
.then(res => res.json())
.then(data => console.log(data))use reqwest;
use serde_json::Value;
#[tokio::main]
async fn main() -> Result<()> {
let resp: Value = reqwest::Client::new()
.get("https://api.rpicx.com/v1/v1/categories")
.send().await?
.json().await?;
println!("{:?}", resp);
Ok(())
}Reponse 200 :
{
"total_images": 100000,
"categories": []
}GET
/v1/statsObtenir les statistiquesRetourne les statistiques agreguees du service. (Limite IP 10 QPS, reponse en cache 3h)
curl 'https://api.rpicx.com/v1/v1/stats'<script>
fetch('https://api.rpicx.com/v1/v1/stats')
.then(res => res.json())
.then(data => console.log(data))
</script>fetch('https://api.rpicx.com/v1/v1/stats')
.then(res => res.json())
.then(data => console.log(data))use reqwest;
use serde_json::Value;
#[tokio::main]
async fn main() -> Result<()> {
let resp: Value = reqwest::Client::new()
.get("https://api.rpicx.com/v1/v1/stats")
.send().await?
.json().await?;
println!("{:?}", resp);
Ok(())
}Reponse 200 :
{
"requests_total": 1000000,
"requests_today": 5000,
"avg_hour_requests": 200.0,
"uv_today": 1200,
"top_referer": [{ "name": "github.com", "count": 300 }],
"top_ua": [{ "name": "Chrome", "count": 500 }],
"status": { "code_200": 900000, "code_302": 50000, "code_404": 20, "code_429": 10, "code_500": 0 },
"sync_count": 30
}GET
/metricsMetriques PrometheusPoint de terminaison des metriques Prometheus, retourne les metriques au format text/plain.
curl 'https://api.rpicx.com/v1/metrics'<script>
fetch('https://api.rpicx.com/v1/metrics')
.then(res => res.json())
.then(data => console.log(data))
</script>fetch('https://api.rpicx.com/v1/metrics')
.then(res => res.text())
.then(data => console.log(data))use reqwest;
#[tokio::main]
async fn main() -> Result<()> {
let resp = reqwest::get("https://api.rpicx.com/v1/metrics").await?;
let text = resp.text().await?;
println!("{}", text);
Ok(())
}Reponse 200 :
# HELP rpicx_requests_total Total requests
# TYPE rpicx_requests_total counter
rpicx_requests_total 1000000
# HELP rpicx_images_total Total images
# TYPE rpicx_images_total gauge
rpicx_images_total 100000GET
/openapi.jsonSpecification OpenAPIRetourne le document de specification OpenAPI 3.0 (format JSON).
curl 'https://api.rpicx.com/v1/openapi.json'<script>
fetch('https://api.rpicx.com/v1/openapi.json')
.then(res => res.json())
.then(data => console.log(data))
</script>fetch('https://api.rpicx.com/v1/openapi.json')
.then(res => res.json())
.then(data => console.log(data))use reqwest;
use serde_json::Value;
#[tokio::main]
async fn main() -> Result<()> {
let resp: Value = reqwest::Client::new()
.get("https://api.rpicx.com/v1/openapi.json")
.send().await?
.json().await?;
println!("{:?}", resp);
Ok(())
}Reponse 200 :
{ "openapi": "3.0.0", "info": { "title": "rpicx API", "version": "1.0.0" } }