- ✅ Výhody použití AXIOS oproti CURL
- ❗ Kdy nelze použít AXIOS
- 🔧 Možnosti použití axios
- ✅ GET
- ✅ POST
- ✅ PUT
- ✅ PATCH
- ✅ DELETE
- ✅ request – obecné volání (např. pro PATCH, když potřebuješ vlastní metodu)
- 📤 Odeslání jednoho souboru (sendFile)
- 📤 Odeslání více souborů (sendFiles) přes FormData
- 📝 Odeslání formulářových dat (sendFormData)
- ➕ Přidání souboru do FormData (addFileToFormData)
- ➕ Přidání textového pole do FormData (addFieldToFormData)
- 🔄 Zpracování odpovědi
- Vlastnosti AXIOS
- Příklady použití AXIOS
- 🔍Rozdíly mezi použitím CURL a AXIOS - příklady
AXIOS API
- ✅ Výhody použití AXIOS oproti CURL
- ❗ Kdy nelze použít AXIOS
- 🔧 Možnosti použití axios
- ✅ GET
- ✅ POST
- ✅ PUT
- ✅ PATCH
- ✅ DELETE
- ✅ request – obecné volání (např. pro PATCH, když potřebuješ vlastní metodu)
- 📤 Odeslání jednoho souboru (sendFile)
- 📤 Odeslání více souborů (sendFiles) přes FormData
- 📝 Odeslání formulářových dat (sendFormData)
- ➕ Přidání souboru do FormData (addFileToFormData)
- ➕ Přidání textového pole do FormData (addFieldToFormData)
- 🔄 Zpracování odpovědi
- Vlastnosti AXIOS
- Příklady použití AXIOS
- 🔍Rozdíly mezi použitím CURL a AXIOS - příklady
V systému lze pro volání API třetích stran používat knihovnu curl
, a nově od verze TAS 5.7 také knihovnu axios
.
✅ Výhody použití AXIOS
oproti CURL
- Přehlednější zápis
Axios používá jednoduchý a čitelný zápis (např.axios.get(url)
místo několikasetOpt
volání). - Méně kódu
Pro běžné operace (GET, POST, PATCH…) není třeba ručně nastavovat typ požadavku, hlavičky nebo formátování těla. - Lepší práce s odpovědí
Axios automaticky převádí odpovědi na JSON (pokudContent-Type
odpovídá) a poskytuje přístup kres.data
,res.status
, atd. - Snazší údržba a čitelnost pro ostatní
Konzultanti a vývojáři rychleji pochopí, co kód dělá, protože struktura odpovídá běžnému zápisu v moderním JavaScriptu.
❗ Kdy nelze použít AXIOS
- Axios funguje pouze pro HTTP/HTTPS požadavky. Nelze jej použít pro jiné protokoly jako např.:
- SMTP (např. odesílání e-mailů)
- FTP
- IMAP/POP3
V těchto případech je třeba nadále používat knihovnu curl
.
🔧 Možnosti použití axios
Axios podporuje všechny běžné HTTP metody:
✅ GET
Slouží k načtení dat z API (např. seznam položek).
axios.getAxios().get('https://api.example.com/items');
✅ POST
Slouží k odeslání dat na server (např. vytvoření nové položky).
axios.getAxios().post('https://api.example.com/items', {
name: 'Nová položka'
});
✅ PUT
Slouží k plné aktualizaci existující položky.
axios.getAxios().put('https://api.example.com/items/123', {
name: 'Aktualizovaná položka'
});
✅ PATCH
Slouží k částečné aktualizaci položky (např. jen jedno pole).
axios.getAxios().patch('https://api.example.com/items/123', {
status: 'aktivní'
});
✅ DELETE
Slouží ke smazání položky.
axios.getAxios().delete('https://api.example.com/items/123');
✅ request
– obecné volání (např. pro PATCH, když potřebuješ vlastní metodu)
axios.getAxios().request({
method: 'patch',
url: 'https://api.example.com/items/123',
data: { status: 'hotovo' }
});
📤 Odeslání jednoho souboru (sendFile
)
const file = lib.getFileContents('/cesta/k/souboru.txt');
axios.getAxios().post('https://api.example.com/upload', file, {
headers: {
'Content-Type': 'application/octet-stream'
}
});
📤 Odeslání více souborů (sendFiles
) přes FormData
const FormData = require('form-data');
const form = new FormData();
form.append('file1', lib.getFileContents('/cesta/k/soubor1.jpg'));
form.append('file2', lib.getFileContents('/cesta/k/soubor2.jpg'));
axios.getAxios().post('https://api.example.com/upload', form, {
headers: form.getHeaders()
});
📝 Odeslání formulářových dat (sendFormData
)
const FormData = require('form-data');
const form = new FormData();
form.append('name', 'Test');
form.append('email', 'test@example.com');
axios.getAxios().post('https://api.example.com/form', form, {
headers: form.getHeaders()
});
➕ Přidání souboru do FormData
(addFileToFormData
)
form.append('file', lib.getFileContents('/cesta/k/souboru.pdf'));
➕ Přidání textového pole do FormData
(addFieldToFormData
)
form.append('description', 'Nahrávám soubor k článku');
🔄 Zpracování odpovědi
Axios vrací odpověď jako objekt, např.:
const response = axios.getAxios().get(url);
proc.warn(response.data); // data z API
Vlastnosti AXIOS
- Timeout - default timeout je 0, v tomto případě pak přichází na řadu timeout calculations (default 120 s)
- Throw error - v případě jiného response status než 200 se throwne odpovídající error.
- Buffer.from
Buffer.from
Tato funkce převádí běžný textový řetězec (string
) na binární data (Buffer
) v kódování UTF-8. Používá se pro správné odesílání XML nebo jiných textových dat přes AXIOS.
Příklad:
const xml = '<soap>...</soap>';
const payload = Buffer.from(xml, 'utf-8');
Příklady použití AXIOS
Použití GET pro získání dat z ČNB
const url = `https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/denni_kurz.txt?date=${formatDate}`;
const body = axios.getAxios().get(url);
proc.warn(body);
Použití PATCH pro update dat na docs.teamassistant.app
function patchMainBody(articleId, newBody) {
const url = `https://api.helpdocs.io/v1/article/${articleId}`;
const payload = { body: newBody };
const requester = axios.getAxios({
timeout: 10000,
headers: {
'Authorization': 'Bearer xxxxxxxx'
}
});
return requester.patch(url, payload);
}
🔍Rozdíly mezi použitím CURL
a AXIOS
- příklady
Volání kurzů ČNB
CURL
function rateCNB(exchangeRateDate, currency, reportingCurrency) {
let formatDate = lib.format(exchangeRateDate, "d.m.Y");
curl.start();
curl.setOpt('CUSTOMREQUEST', 'GET');
curl.setOpt('FOLLOWLOCATION', true);
curl.setOpt('FAILONERROR', false);
curl.setOpt('SSL_VERIFYPEER', false);
curl.setOpt('SSL_VERIFYHOST', false);
curl.setOpt('TIMEOUT', 30);
curl.setOpt('HTTPHEADER', [
'Content-Type: application/json',
'Accept: application/json'
]);
curl.setOpt('URL', `https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/denni_kurz.txt?date=${formatDate}`);
var crossRate = curl.perform();
//search for specific currency
try {
const body = crossRate.data;
...
AXIOS
function rateCNB(exchangeRateDate, currency, reportingCurrency) {
let formatDate = lib.format(exchangeRateDate, "d.m.Y");
const url = `https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/denni_kurz.txt?date=${formatDate}`;
const body = axios.getAxios().get(url);
//search for specific currency
try {
const rows = body.split('\n');
...
Updated
by Frantisek Brych