API ir Visual Basic pavyzdžiai

API ir Visual Basic 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> ).

Imports System.Net.Http
Imports System.Text
Imports Newtonsoft.Json ' Pridėkite šią biblioteką JSON apdorojimui

Module RivileApiRequest
    Sub Main()
        ' Rivile Public REST API URL
        Dim url As String = "https://erp.rivile.cloud/public-api/v1/sale-invoices"

        ' API rakto tokenas. Jį sukurti ir pasiimti galite iš Rivile ERP sistemos.
        Dim apiKey As String = "<Jūsų_API_Raktas>"

        ' Sukuriame pardavimų sąskaitos duomenų objektą JSON formatu
        Dim data As New Dictionary(Of String, Object) From {
            {"clientId", "3fa85f64-5717-4562-b3fc-2c963f66afa6"},
            {"clientName", "Rivilė, UAB"},
            {"documentNo", "ERP-002365"},
            {"isTaxIncluded", False},
            {"currencyCode", "EUR"},
            {"notes", "Sąskaita iš elektroninės parduotuvės"}
        }

        ' Sukuriame sąskaitos eilutes
        Dim lineItem As New Dictionary(Of String, Object) From {
            {"itemCode", "SM-S928BZYHEUB"},
            {"itemName", "Samsung Galaxy S21 Ultra"},
            {"uomAltCode", "VNT"},
            {"qtyAlt", 1},
            {"price", 1000.0},
            {"departmentCode", "SAND1"}
        }

        ' Pridedame eilutę į pardavimų sąskaitą
        Dim lines As New List(Of Dictionary(Of String, Object)) From {
            lineItem
        }
        data.Add("lines", lines)

        ' Konvertuojame duomenis į JSON formatą
        Dim jsonData As String = JsonConvert.SerializeObject(data)

        ' Sukuriame HttpClient užklausą
        Dim client As New HttpClient()

        ' Nustatome antraštes
        client.DefaultRequestHeaders.Add("X-SessionToken", apiKey)
        client.DefaultRequestHeaders.Add("Content-Type", "application/json")

        ' Sukuriame POST užklausą
        Dim content As New StringContent(jsonData, Encoding.UTF8, "application/json")
        Dim response As HttpResponseMessage = client.PostAsync(url, content).Result

        ' Patikriname atsakymo kodą ir atvaizduojame atsakymą
        If response.IsSuccessStatusCode Then
            Dim responseBody As String = response.Content.ReadAsStringAsync().Result
            Console.WriteLine("Atsakymas: " & responseBody)
        Else
            Console.WriteLine("Klaida: " & response.StatusCode.ToString() & " - " & response.Content.ReadAsStringAsync().Result)
        End If
    End Sub
End Module

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ą:

Imports System.Web
Imports System.Net
Imports System.IO

Module Program
    Sub Main()
        ' JSON filtro sąlygų konvertavimas į eilutę
        Dim filters As String = "[{""operation"":""CONTAINS"",""name"":""name"",""value"":""Demo""},{""operation"":""EQUAL"",""name"":""active"",""value"":true}]"

        ' Filtro eilutės konvertavimas į URL formatą
        Dim urlEncodedFilter As String = HttpUtility.UrlEncode(filters)

        ' Filtro apjungimas su puslapiavimo parametrais
        Dim queryParams As String = "?size=30&page=0&filter=" & urlEncodedFilter

        ' Pilnos GET užklausos sukonstravimas
        Dim baseUrl As String = "https://erp.rivile.cloud/public-api/v1/clients"
        Dim fullUrl As String = baseUrl & queryParams
        Console.WriteLine(fullUrl)

        ' Jei norite išsiųsti užklausą
        Dim request As HttpWebRequest = CType(WebRequest.Create(fullUrl), HttpWebRequest)
        request.Method = "GET"

        Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
        Dim dataStream As Stream = response.GetResponseStream()
        Dim reader As New StreamReader(dataStream)
        Dim responseFromServer As String = reader.ReadToEnd()

        ' Atvaizduoti atsakymą
        Console.WriteLine(responseFromServer)

        reader.Close()
        dataStream.Close()
        response.Close()
    End Sub
End Module

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

API