Herkese açık API
Oyun dizini hesapsız, JSON olarak okunur: başka bir site, bir uygulama, bir bot için…
- Etkileşimli dokümantasyon (OpenAPI): /api/docs, her çağrı orada denenebilir; ham tanım: /api/docs.jsonopenapi
- Oyunlar:
GET /api/games - Bir oyun:
GET /api/games/{slug} - Kategoriler:
GET /api/categories, bir kategori:GET /api/categories/{slug}
API salt okunurdur ve her siteden gelen çağrılara izin verir (CORS). Yanıtlar bir dakika önbellekte tutulur.
Oyunlar
| Parametre | |
|---|---|
category |
bir kategori (slug değeri) |
kind |
original (özgün oyun), cpc (Amstrad CPC remake'i), port (taşıma) |
order[rating], order[plays], order[publishedAt], order[title] |
sıralama, asc ya da desc; eşitliği bozmak için art arda birkaçı. Varsayılan: en yeniler önce |
page, itemsPerPage |
sayfa başına 30 oyun, en fazla 100 |
curl -g -H 'Accept: application/json' 'https://<bu site>/api/games?category=arcade&order[rating]=desc'
Her oyun:
| Alan | |
|---|---|
slug, title, description |
|
category, kind |
kategorisi (slug), proje türü |
author |
yazarı (GitHub kullanıcı adı) |
rating, ratings |
5 üzerinden ortalama puanı (oy yoksa null), oy sayısı |
plays |
başlatılan oyun sayısı |
engine, publishedAt |
JumPHP motorunun sürümü, son yayınlanma tarihi |
forkOf |
fork'u olduğu oyun, yoksa null |
url, play, source |
sayfası, tam ekran oyun, gezilebilir kodu |
image |
640 × 360 görseli (yoksa null) |
repository, manifest |
GitHub deposu, yayınlanan dosyalarının listesi (JumPHP'nin uzak modu) |
Puana göre sıralama oyunlar sayfasındakiyle aynıdır: bir oyunun az oyu olduğu sürece ortalama 3'e doğru çekilir (üç hayalet oy), böylece tek bir 5/5, birçok 4,5'in önüne geçmez.
Sayfalar ve JSON-LD
Düz JSON'da (Accept: application/json) bir liste bir dizidir. JSON-LD'de (Accept: application/ld+json, varsayılan biçim) ayrıca toplam sayıyı (totalItems) ve sayfaların adreslerini (view.next, view.last) verir:
{
"@id": "/api/games",
"totalItems": 42,
"member": [ { "@id": "/api/games/pong", "slug": "pong", "title": "PONG", "…": "…" } ],
"view": { "next": "/api/games?page=2", "last": "/api/games?page=2" }
}
Hatalar: var olmayan (ya da artık listelenmeyen) bir oyun ya da kategori için 404, geçersiz bir parametre için 422 (kind=zzz), Problem Details biçiminde (application/problem+json).