API ir Python pavyzdžiai

API ir Python pavyzdžiai

OpenAPI adresas pateikiamas čia: RIVILE ERP_API(Swagger UI)

Kodo pavyzdys

Užduotis: Suformuoti pardavimų sąskaitos sukūrimą ir registravimą, naudojant POST užklausą į Rivile REST API.

Su viena užklausa galima sukurti dokumentą su eilutėmis, kai eilučių kiekis yra <= 100. Jei norite sukurti dokumentą su > 100 eilučių, rekomenduojame pirma sukurti dokumentą ir vėliau atskiromis užklausomis kurti dokumento eilutes.

Naudojant suformuotą pavyzdį naudoti savo API raktą ( <Jūsų_API_Raktas> ).

import requests
import json

# Rivile Public REST API URL
url = "https://erp.rivile.cloud/public-api/v1/sale-invoices"

# API rakto tokenas. Jį sukurti ir pasiimti galite iš Rivile ERP sistemos.
api_key = "<Jūsų_API_Raktas>"

# Sukuriame pardavimų sąskaitos duomenų objektą JSON formatu
data = {
    "clientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "clientName": "Rivilė, UAB",
    "documentNo": "ERP-002365",
    "isTaxIncluded": False,
    "currencyCode": "EUR",
    "notes": "Sąskaita iš elektroninės parduotuvės",
    "lines": [
        {
            "itemCode": "SM-S928BZYHEUB",
            "itemName": "Samsung Galaxy S21 Ultra",
            "uomAltCode": "VNT",
            "qtyAlt": 1,
            "price": 1000.00,
            "departmentCode": "SAND1"
        }
    ]
}

# Konvertuojame duomenis į JSON formatą
json_data = json.dumps(data)

# Sukuriame HTTP antraštes su API raktu
headers = {
    "X-SessionToken": api_key,
    "Content-Type": "application/json"
}

# Siunčiame POST užklausą
response = requests.post(url, headers=headers, data=json_data)

# Patikriname, ar nėra klaidų ir atvaizduojame atsakymą
if response.status_code == 200:
    print("Atsakymas:", response.json())
else:
    print(f"Klaida: {response.status_code} - {response.text}")

GET sąrašiniuose metoduose duomenų filtravimas

Galimas duomenų filtravimas, kuris leidžia sujungti kelis filtrus juos jungiant loginę funkciją AND .

Filtravimui galimi naudoti operatoriai:

  • CONTAINS: Tikrina, ar laukas turi nurodytą tekstą.
  • NOT_CONTAINS: Tikrina, ar laukas neturi nurodyto teksto.
  • EQUAL: Tikrina, ar laukas yra lygus nurodytam tekstui, skaičiui arba loginei reikšmei.
  • NOT_EQUAL: Tikrina, ar laukas nėra lygus nurodytam tekstui arba skaičiui.
  • GREATER_THAN: Tikrina, ar laukas yra didesnis nei nurodytas skaičius.
  • STARTS_WITH: Tikrina, ar laukas prasideda nurodytu tekstu.
  • ENDS_WITH: Tikrina, ar laukas baigiasi nurodytu tekstu.

Pavyzdys:

Užduotis: Vykdyti filtravimą klientų, kurių pavadinime yra fragmentas "Demo" ir jie yra aktyvūs.

API filtrų sąlyga:

[
  {    "operation": "CONTAINS",    "name": "name",    "value": "Demo"  } ,
  {    "operation": "EQUAL",    "name": "active",    "value": true  } 
]

Vykdant užklausą filtro reikšmę reikia užkoduoti (Encode).

API filtro rezultatas:

GET {{baseUrl}}/v1/clients?size=30&page=0&filter=%7B%22operation%22%3A%22CONTAINS%22%2C%22name%22%3A%22name%22%2C%22value%22%3A%22Demo%22%7D%2C%7B%22operation%22%3A%22EQUAL%22%2C%22name%22%3A%22active%22%2C%22value%22%3Atrue%7D

Kodas, skirtas sukurti filtrą ir suformuoti GET užklausą:

import json
import urllib.parse

# Filtras
filters = [
    { "operation": "CONTAINS", "name": "name", "value": "Demo" },
    { "operation": "EQUAL", "name": "active", "value": True }
]

# JSON filtro sąlygų konvertavimas į eilutę
json_filter = json.dumps(filters)

# Filtro eilutės konvertavimas į URL formatą
url_encoded_filter = urllib.parse.quote(json_filter)

# Filtro apjungimas su puslapiavimo parametrais
query_params = "?size=30&page=0&filter={url_encoded_filter}"

# Pilnos GET užklausos sukonstravimas
base_url = "https://erp.rivile.cloud/public-api/v1/clients"
full_url = base_url + query_params
print(full_url)

# Jei norite išsiųsti užklausą
import requests
response = requests.get(full_url)
print(response.json())

Užklausose įrašų skaičius negali viršyti 100 !

API