Skip to content

Catálogo de itens ​

Quando alguém cria uma oferta, o IdleBazaar consulta o catálogo com o nome digitado e mostra os itens encontrados com imagem.

Requisição ​

Um GET com dois parâmetros: q (texto pesquisado) e limit (sempre 12).

http
GET https://mygame.com/api/items?q=sword&limit=12

Resposta ​

json
{
  "items": [
    { "id": "42", "name": "Magic Sword", "image": "/images/items/42.png" },
    { "id": "43", "name": "Sword of Fury", "image": "https://mygame.com/images/items/43.png" }
  ]
}

Regras ​

  • A resposta precisa ter a lista items. Só os 12 primeiros são usados.
  • id: texto ou número com letras, números, _ ou -, até 80 caracteres, sem repetir.
  • name: até 200 caracteres.
  • image: caminho relativo ou URL da mesma origem do catálogo.
  • As respostas ficam em cache por 1 minuto.

Exemplo de implementação ​

js
app.get('/api/items', (req, res) => {
  const q = String(req.query.q ?? '').toLowerCase()
  const limit = Math.min(Number(req.query.limit) || 12, 12)
  const items = game.items
    .filter(item => item.name.toLowerCase().includes(q))
    .slice(0, limit)
    .map(item => ({ id: String(item.id), name: item.name, image: `/images/items/${item.id}.png` }))
  res.json({ items })
})
php
<?php
header('Content-Type: application/json');
$q = mb_strtolower($_GET['q'] ?? '');
$items = array_filter($game->items(), fn ($item) => str_contains(mb_strtolower($item->name), $q));
echo json_encode(['items' => array_map(fn ($item) => [
    'id' => (string) $item->id,
    'name' => $item->name,
    'image' => "/images/items/{$item->id}.png",
], array_slice(array_values($items), 0, 12))]);
python
@app.get("/api/items")
def items():
    q = request.args.get("q", "").lower()
    found = [item for item in game.items if q in item.name.lower()][:12]
    return {"items": [
        {"id": str(item.id), "name": item.name, "image": f"/images/items/{item.id}.png"}
        for item in found
    ]}