Uživatelské nástroje

Nástroje pro tento web


navody:vps:api

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

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 aithernavody: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://github.com/vpsfreecz/haveapi|HaveAPI]]. 
-[[https://github.com/vpsfreecz/haveapi|HaveAPI]], které vytváří +Jeho [[https://github.com/vpsfreecz/haveapi#what-is-a-self-describing-api|popis]] 
-[[https://github.com/vpsfreecz/haveapi#what-is-a-self-describing-api|samodokumentující]] +obsahuje dostupné zdroje, akce a parametry.
-se API, což znamená, že lze využít předpřipravené generické +
-klienty:+
  
-  * Ruby - https://github.com/vpsfreecz/vpsfree-client +Pro práci s API můžeš použít tyto klienty:
-  * PHP - https://github.com/vpsfreecz/haveapi/tree/master/clients/php +
-  * JavaScript - https://github.com/vpsfreecz/haveapi/tree/master/clients/js +
-  * Go - https://github.com/vpsfreecz/haveapi/tree/master/clients/go+
  
-Ukázka použití je vždy v ''README.md'' každého klienta. Obecně se klientovi +  * [[#instalace_klienta|CLI vpsfreectl]] a [[#klient_pro_ruby|knihovna pro Ruby]] z balíčku ''vpsfree-client'' 
-předá URL k API, poté si sám stáhne dokumentaci a podle ní se nastaví.+  * [[#klient_pro_php|PHP]] 
 +  * [[#klient_pro_python|Python]] 
 +  * [[#dynamicky_klient_haveapi_pro_javascript_a_typescript|Dynamický klient HaveAPI pro JavaScript a TypeScript]] 
 +  * [[#klient_pro_go|Go]] 
 +  * [[#generovany_klient_pro_vpsadmin_v_typescriptu|Generovaný klient pro vpsAdmin v TypeScriptu]] 
 +  * [[#klient_pro_rust|Rust]]
  
 API je [[wp>Representational state transfer|RESTful]], takže pro jednoduché API je [[wp>Representational state transfer|RESTful]], takže pro jednoduché
Řádek 652: Řádek 652:
 end end
 </code> </code>
 +
 +===== Další klienti =====
 +
 +Každá ukázka získá [[#tokeny|token API]] pomocí uživatelského jména a hesla do
 +vpsAdminu a pak vypíše ID a hostname nejvýše 10 VPS. Místo ''USERNAME''
 +a ''PASSWORD'' doplň své přihlašovací údaje. Pokud už token máš, nahraď
 +přihlašovací kód zakomentovanou alternativou a doplň ho místo ''TOKEN''.
 +
 +==== Klient pro PHP ====
 +
 +[[https://github.com/vpsfreecz/haveapi/tree/master/clients/php|Klienta HaveAPI pro PHP]]
 +nainstaluj pomocí Composeru:
 +
 +<code bash>
 +composer require haveapi/client
 +</code>
 +
 +Ukázku ulož jako ''vps-list.php'' vedle adresáře ''vendor'' a spusť příkazem
 +''php vps-list.php'':
 +
 +<code php>
 +<?php
 +require __DIR__ . '/vendor/autoload.php';
 +
 +$api = new \HaveAPI\Client('https://api.vpsfree.cz');
 +$api->authenticate('token', ['user' => 'USERNAME', 'password' => 'PASSWORD']);
 +// Nebo předchozí přihlášení nahraď existujícím tokenem:
 +// $api->authenticate('token', ['token' => 'TOKEN']);
 +
 +foreach ($api->vps->list(['limit' => 10]) as $vps) {
 +    echo $vps->id . ': ' . $vps->hostname . PHP_EOL;
 +}
 +</code>
 +
 +Další akce a zpracování chyb popisuje
 +[[https://github.com/vpsfreecz/haveapi/tree/master/clients/php#usage|README klienta]].
 +
 +==== Klient pro Python ====
 +
 +Balíček [[https://pypi.org/project/haveapi-client/|haveapi-client]] nainstaluj pomocí pip:
 +
 +<code bash>
 +python -m pip install haveapi-client
 +</code>
 +
 +Ukázku ulož jako ''vps-list.py'' a spusť příkazem ''python vps-list.py'':
 +
 +<code python>
 +from haveapi_client import Authenticated, Client, TokenAuth
 +
 +with Client("https://api.vpsfree.cz") as api:
 +    login = api.begin_token_login({
 +        "user": "USERNAME",
 +        "password": "PASSWORD",
 +        "lifetime": "renewable_auto",
 +    })
 +    if not isinstance(login, Authenticated):
 +        raise RuntimeError("Přihlášení vyžaduje další krok")
 +    # Nebo předchozí blok přihlášení nahraď existujícím tokenem:
 +    # api.set_auth(TokenAuth("TOKEN"))
 +
 +    result = api.vps.list(limit=10)
 +    for vps in result.data:
 +        print(vps["id"], vps["hostname"])
 +</code>
 +
 +[[https://github.com/vpsfreecz/haveapi/tree/master/clients/python|README klienta]]
 +popisuje také asynchronní volání s ''AsyncClient''.
 +
 +==== 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
 +</code>
 +
 +Ukázka funguje v JavaScriptu i TypeScriptu. Pro spuštění v Node.js ji ulož jako
 +''vps-list.mjs'' a použij příkaz ''node vps-list.mjs'':
 +
 +<code javascript>
 +import { AsyncClient } from "haveapi-client";
 +
 +async function main() {
 +  const api = new AsyncClient("https://api.vpsfree.cz");
 +  await api.authenticate("token", { user: "USERNAME", password: "PASSWORD" });
 +  // Nebo předchozí přihlášení nahraď existujícím tokenem:
 +  // await api.authenticate("token", { token: "TOKEN" });
 +  const result = await api.resource("vps").action("list")({
 +    params: { limit: 10 },
 +  });
 +  const vpses = result.response.data;
 +  if (Array.isArray(vpses)) {
 +    for (const vps of vpses) {
 +      console.log(vps.id, vps.hostname);
 +    }
 +  }
 +}
 +
 +main().catch(() => console.error("Požadavek na API selhal."));
 +</code>
 +
 +Další akce a použití v prohlížeči najdeš v
 +[[https://github.com/vpsfreecz/haveapi/tree/master/clients/js|README klienta]].
 +
 +==== Klient pro Go ====
 +
 +[[https://github.com/vpsfreecz/vpsadmin-go-client|Klienta pro vpsAdmin v Go]]
 +přidej do svého Go modulu:
 +
 +<code bash>
 +go get github.com/vpsfreecz/vpsadmin-go-client/client
 +</code>
 +
 +Ukázku ulož jako ''main.go'' a spusť příkazem ''go run .'':
 +
 +<code go>
 +package main
 +
 +import (
 + "fmt"
 + "log"
 +
 + "github.com/vpsfreecz/vpsadmin-go-client/client"
 +)
 +
 +func main() {
 + api := client.New("https://api.vpsfree.cz")
 + if err := api.SetNewTokenAuth(&client.TokenAuthOptions{
 + User:     "USERNAME",
 + Password: "PASSWORD",
 + }); err != nil {
 + log.Fatal(err)
 + }
 + // Nebo předchozí blok přihlášení nahraď existujícím tokenem:
 + // api.SetExistingTokenAuth("TOKEN")
 +
 + action := api.Vps.Index.Prepare()
 + action.NewInput().SetLimit(10)
 + response, err := action.Call()
 + if err != nil {
 + log.Fatal(err)
 + }
 + if !response.Status {
 + log.Fatalf("%s: %v", response.Message, response.Errors)
 + }
 +
 + for _, vps := range response.Output {
 + fmt.Println(vps.Id, vps.Hostname)
 + }
 +}
 +</code>
 +
 +Další akce a parametry najdeš v
 +[[https://github.com/vpsfreecz/vpsadmin-go-client#usage|README klienta]].
 +
 +==== Generovaný klient pro vpsAdmin v TypeScriptu ====
 +
 +[[https://github.com/vpsfreecz/vpsadmin-typescript-client|Klient pro vpsAdmin v TypeScriptu]]
 +poskytuje typované metody pro zdroje a akce vpsAdminu. Nainstaluj ho pomocí npm,
 +které přidá i jeho závislost ''haveapi-client'':
 +
 +<code bash>
 +npm install vpsadmin-typescript-client
 +</code>
 +
 +Ukázka funguje v JavaScriptu i TypeScriptu. Pro spuštění v Node.js ji ulož jako
 +''vps-list.mjs'' a použij příkaz ''node vps-list.mjs''.
 +U tohoto klienta použij základní adresu ''https://api.vpsfree.cz/v7.0'':
 +
 +<code javascript>
 +import { AsyncClient } from "haveapi-client";
 +import { createHaveApiExecutor, createVpsAdminClient } from "vpsadmin-typescript-client";
 +
 +async function main() {
 +  const runtime = new AsyncClient("https://api.vpsfree.cz/v7.0");
 +  await runtime.authenticate("token", { user: "USERNAME", password: "PASSWORD" });
 +  // Nebo předchozí přihlášení nahraď existujícím tokenem:
 +  // await runtime.authenticate("token", { token: "TOKEN" });
 +  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, vps.hostname);
 +  }
 +}
 +
 +main().catch(() => console.error("Požadavek na API selhal."));
 +</code>
 +
 +Další akce a typy popisuje
 +[[https://github.com/vpsfreecz/vpsadmin-typescript-client#readme|README klienta]].
 +
 +==== Klient pro Rust ====
 +
 +Do svého projektu v Rustu přidej balíček
 +[[https://crates.io/crates/vpsadmin-client|vpsadmin-client]]. Ukázka používá
 +synchronní volání, proto zapni podporu ''blocking'':
 +
 +<code bash>
 +cargo add vpsadmin-client --features blocking
 +</code>
 +
 +Ukázku ulož jako ''src/main.rs'' a spusť příkazem ''cargo run'':
 +
 +<code rust>
 +use vpsadmin_client::{blocking::Client, TokenStep};
 +
 +fn main() -> Result<(), Box<dyn std::error::Error>> {
 +    let login = Client::builder("https://api.vpsfree.cz").build()?;
 +    let response = login.authentication__token__token().request()
 +        .user("USERNAME")
 +        .password("PASSWORD")
 +        .lifetime("renewable_auto")
 +        .send()?;
 +    let TokenStep::Complete { token } = response.output.token_step()? else {
 +        return Err("Přihlášení vyžaduje další krok".into());
 +    };
 +    let api = Client::builder("https://api.vpsfree.cz")
 +        .token(token.expose_secret())
 +        .build()?;
 +    // Nebo předchozí přihlášení a vytvoření klienta nahraď existujícím tokenem:
 +    // let api = Client::builder("https://api.vpsfree.cz").token("TOKEN").build()?;
 +
 +    let response = api.vps().index().limit(10).send()?;
 +    for vps in response.output {
 +        if let (Some(id), Some(hostname)) = (vps.id, vps.hostname) {
 +            println!("{} {}", id, hostname);
 +        }
 +    }
 +    Ok(())
 +}
 +</code>
 +
 +Další akce, asynchronní volání a požadavky na Rust najdeš v
 +[[https://github.com/vpsfreecz/vpsadmin-rust-client#readme|README klienta]].
  
 <maintainers hidden> <maintainers hidden>
navody/vps/api.1793562507.txt.gz · Poslední úprava: autor: aither