Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verze | |||
| navody:vps:api [2026/11/01 19:48] – Uspořádání autentizace a CLI, aktualizace instalace a příkladů v Ruby aither | navody:vps:api [2026/11/01 19:49] (aktuální) – Přehled klientů a příklady pro PHP, Python, JavaScript, TypeScript, Go a Rust aither | ||
|---|---|---|---|
| Řádek 16: | Řádek 16: | ||
| ===== Práce s API ===== | ===== Práce s API ===== | ||
| - | API je postaveno na námi vyvinutém frameworku | + | API používá framework |
| - | [[https:// | + | Jeho [[https:// |
| - | [[https:// | + | obsahuje dostupné zdroje, akce a parametry. |
| - | se API, což znamená, že lze využít předpřipravené generické | + | |
| - | klienty: | + | |
| - | * Ruby - https:// | + | Pro práci s API můžeš použít tyto klienty: |
| - | * PHP - https:// | + | |
| - | * JavaScript - https:// | + | |
| - | * Go - https:// | + | |
| - | Ukázka použití je vždy v '' | + | * [[# |
| - | předá URL k API, poté si sám stáhne dokumentaci | + | * [[# |
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| API je [[wp> | API je [[wp> | ||
| Řádek 652: | Řádek 652: | ||
| end | end | ||
| </ | </ | ||
| + | |||
| + | ===== Další klienti ===== | ||
| + | |||
| + | Každá ukázka získá [[# | ||
| + | vpsAdminu a pak vypíše ID a hostname nejvýše 10 VPS. Místo '' | ||
| + | a '' | ||
| + | přihlašovací kód zakomentovanou alternativou a doplň ho místo '' | ||
| + | |||
| + | ==== Klient pro PHP ==== | ||
| + | |||
| + | [[https:// | ||
| + | nainstaluj pomocí Composeru: | ||
| + | |||
| + | <code bash> | ||
| + | composer require haveapi/ | ||
| + | </ | ||
| + | |||
| + | Ukázku ulož jako '' | ||
| + | '' | ||
| + | |||
| + | <code php> | ||
| + | <?php | ||
| + | require __DIR__ . '/ | ||
| + | |||
| + | $api = new \HaveAPI\Client(' | ||
| + | $api-> | ||
| + | // Nebo předchozí přihlášení nahraď existujícím tokenem: | ||
| + | // $api-> | ||
| + | |||
| + | foreach ($api-> | ||
| + | echo $vps->id . ': ' . $vps-> | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Další akce a zpracování chyb popisuje | ||
| + | [[https:// | ||
| + | |||
| + | ==== Klient pro Python ==== | ||
| + | |||
| + | Balíček [[https:// | ||
| + | |||
| + | <code bash> | ||
| + | python -m pip install haveapi-client | ||
| + | </ | ||
| + | |||
| + | Ukázku ulož jako '' | ||
| + | |||
| + | <code python> | ||
| + | from haveapi_client import Authenticated, | ||
| + | |||
| + | with Client(" | ||
| + | login = api.begin_token_login({ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }) | ||
| + | if not isinstance(login, | ||
| + | raise RuntimeError(" | ||
| + | # Nebo předchozí blok přihlášení nahraď existujícím tokenem: | ||
| + | # api.set_auth(TokenAuth(" | ||
| + | |||
| + | result = api.vps.list(limit=10) | ||
| + | for vps in result.data: | ||
| + | print(vps[" | ||
| + | </ | ||
| + | |||
| + | [[https:// | ||
| + | popisuje také asynchronní volání s '' | ||
| + | |||
| + | ==== Dynamický klient HaveAPI pro JavaScript a TypeScript ==== | ||
| + | |||
| + | Oba jazyky používají stejný balíček z npm, který obsahuje i deklarace typů pro TypeScript: | ||
| + | |||
| + | <code bash> | ||
| + | npm install haveapi-client | ||
| + | </ | ||
| + | |||
| + | Ukázka funguje v JavaScriptu i TypeScriptu. Pro spuštění v Node.js ji ulož jako | ||
| + | '' | ||
| + | |||
| + | <code javascript> | ||
| + | import { AsyncClient } from " | ||
| + | |||
| + | async function main() { | ||
| + | const api = new AsyncClient(" | ||
| + | await api.authenticate(" | ||
| + | // Nebo předchozí přihlášení nahraď existujícím tokenem: | ||
| + | // await api.authenticate(" | ||
| + | const result = await api.resource(" | ||
| + | params: { limit: 10 }, | ||
| + | }); | ||
| + | const vpses = result.response.data; | ||
| + | if (Array.isArray(vpses)) { | ||
| + | for (const vps of vpses) { | ||
| + | console.log(vps.id, | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | main().catch(() => console.error(" | ||
| + | </ | ||
| + | |||
| + | Další akce a použití v prohlížeči najdeš v | ||
| + | [[https:// | ||
| + | |||
| + | ==== Klient pro Go ==== | ||
| + | |||
| + | [[https:// | ||
| + | přidej do svého Go modulu: | ||
| + | |||
| + | <code bash> | ||
| + | go get github.com/ | ||
| + | </ | ||
| + | |||
| + | Ukázku ulož jako '' | ||
| + | |||
| + | <code go> | ||
| + | package main | ||
| + | |||
| + | import ( | ||
| + | " | ||
| + | " | ||
| + | |||
| + | " | ||
| + | ) | ||
| + | |||
| + | func main() { | ||
| + | api := client.New(" | ||
| + | if err := api.SetNewTokenAuth(& | ||
| + | User: | ||
| + | Password: " | ||
| + | }); err != nil { | ||
| + | log.Fatal(err) | ||
| + | } | ||
| + | // Nebo předchozí blok přihlášení nahraď existujícím tokenem: | ||
| + | // api.SetExistingTokenAuth(" | ||
| + | |||
| + | action := api.Vps.Index.Prepare() | ||
| + | action.NewInput().SetLimit(10) | ||
| + | response, err := action.Call() | ||
| + | if err != nil { | ||
| + | log.Fatal(err) | ||
| + | } | ||
| + | if !response.Status { | ||
| + | log.Fatalf(" | ||
| + | } | ||
| + | |||
| + | for _, vps := range response.Output { | ||
| + | fmt.Println(vps.Id, | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Další akce a parametry najdeš v | ||
| + | [[https:// | ||
| + | |||
| + | ==== Generovaný klient pro vpsAdmin v TypeScriptu ==== | ||
| + | |||
| + | [[https:// | ||
| + | poskytuje typované metody pro zdroje a akce vpsAdminu. Nainstaluj ho pomocí npm, | ||
| + | které přidá i jeho závislost '' | ||
| + | |||
| + | <code bash> | ||
| + | npm install vpsadmin-typescript-client | ||
| + | </ | ||
| + | |||
| + | Ukázka funguje v JavaScriptu i TypeScriptu. Pro spuštění v Node.js ji ulož jako | ||
| + | '' | ||
| + | U tohoto klienta použij základní adresu '' | ||
| + | |||
| + | <code javascript> | ||
| + | import { AsyncClient } from " | ||
| + | import { createHaveApiExecutor, | ||
| + | |||
| + | async function main() { | ||
| + | const runtime = new AsyncClient(" | ||
| + | await runtime.authenticate(" | ||
| + | // Nebo předchozí přihlášení nahraď existujícím tokenem: | ||
| + | // await runtime.authenticate(" | ||
| + | const api = createVpsAdminClient({ execute: createHaveApiExecutor(runtime) }); | ||
| + | const page = await api.vps.index({ params: { limit: 10 } }); | ||
| + | for (const vps of page.data) { | ||
| + | console.log(vps.id, | ||
| + | } | ||
| + | } | ||
| + | |||
| + | main().catch(() => console.error(" | ||
| + | </ | ||
| + | |||
| + | Další akce a typy popisuje | ||
| + | [[https:// | ||
| + | |||
| + | ==== Klient pro Rust ==== | ||
| + | |||
| + | Do svého projektu v Rustu přidej balíček | ||
| + | [[https:// | ||
| + | synchronní volání, proto zapni podporu '' | ||
| + | |||
| + | <code bash> | ||
| + | cargo add vpsadmin-client --features blocking | ||
| + | </ | ||
| + | |||
| + | Ukázku ulož jako '' | ||
| + | |||
| + | <code rust> | ||
| + | use vpsadmin_client:: | ||
| + | |||
| + | fn main() -> Result< | ||
| + | let login = Client:: | ||
| + | let response = login.authentication__token__token().request() | ||
| + | .user(" | ||
| + | .password(" | ||
| + | .lifetime(" | ||
| + | .send()?; | ||
| + | let TokenStep:: | ||
| + | return Err(" | ||
| + | }; | ||
| + | let api = Client:: | ||
| + | .token(token.expose_secret()) | ||
| + | .build()?; | ||
| + | // Nebo předchozí přihlášení a vytvoření klienta nahraď existujícím tokenem: | ||
| + | // let api = Client:: | ||
| + | |||
| + | let response = api.vps().index().limit(10).send()?; | ||
| + | for vps in response.output { | ||
| + | if let (Some(id), Some(hostname)) = (vps.id, vps.hostname) { | ||
| + | println!(" | ||
| + | } | ||
| + | } | ||
| + | Ok(()) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Další akce, asynchronní volání a požadavky na Rust najdeš v | ||
| + | [[https:// | ||
| < | < | ||