Print

CallRest i CallWebSite

Dostępne funkcje, które wywołują REST API w Amodicie

  1. CallRest – jest uwierzytelnianie ?
  2. CallWebSite – brak uwierzytelniania ☹

Składnia

CallRest(<nazwa serwisu>, <nazwa metody> [, argument0, argument1, … , argumentN ])

Wymagania stawiane przez Rest API

  • Obsługa typów metod GET, POST (rzadziej PUT, DELETE)
  • Zwracanie danych w notacji JSON (CallRest zwraca JSONa)
  • Uwierzytelnienie za pośrednictwem ApiKey

Rekonesans Rest API

Aby pracować z REST API jakiegoś dostawcy warto przeprowadzić krótki rekonesans, aby zorientować się w jaki sposób następuje uwierzytelnianie, jakie są dostępne endpoint’y itp. Poniżej kilka sugestii 

  1. Przegląd Swagger’a: przykład http://localhost:57659/Help
  2. Pozyskanie danych do uwierzytelniania
  3. Sprawdzenie API za pomocą Postmana

Konfiguracja parametrów w AMODIT

Funkcje CallWebSite i CallRest pobierają dane z parametrów systemowych z rozszerzeń AMODIT. Konfiguracja tych parametrów możliwa jest wyłącznie z poziomu bazy danych.

Parametry muszą mieć nazwy zaczynające się od external.rest.

Konwencja nazw dla parametrów 

external.rest.< Nazwa serwisu >[.< Nazwa endpointa >][.<Nazwa pomocnicza>]

Parametry dodawane dla każdego serwisu (jeden zestaw dla jednego serwisu)

Nazwa parametru Przykład Uwagi
external.rest.<Nazwa serwisu>  external.rest.TestAPI jako wartość podawana jest lokalizacja serwisu np. https://myrestservice.astrafox.com albo http://localhost:57659/
external.rest.<Nazwa serwisu>.Login  external.rest.TestAPI.Login wymagane tylko przy autoryzacji typu BASIC i TOKEN
external.rest.<Nazwa serwisu>.Password  external.rest.TestAPI.Password wymagane tylko przy autoryzacji typu BASIC
external.rest.<Nazwa serwisu>.APIToken  external.rest.TestAPI.APIToken wymagany przy autoryzacji typu TOKEN, BEARER lub CUSTOM
external.rest.<Nazwa serwisu>.AuthorizationType  external.rest.TestAPI. AuthorizationType dostępnych jest 5 typów uwierzytelniania: BASIC, TOKEN, BEARER, NOAUTH i CUSTOM.Tryb CUSTOM powinien być używany jedynie gdy nie da się wykorzystać pozostałych trybów.
(opcję APIKEY można uzyskać poprzez CUSTOM)
external.rest.<Nazwa serwisu>. AuthorizationHeaderParam  external.rest.TestAPI. AuthorizationHeaderParam definiuje nazwę nagłówka odpowiedzialnego za uwierzytelnienie, wymagany jedynie przy wyborze typu uwierzytelnienia CUSTOM

Parametry dodawane dla każdego endpointa w danym serwisie

Nazwa parametru Przykład Uwagi
external.rest.<Nazwa serwisu>.<Nazwa endpointa>.Endpoint external.rest.TestAPI. GetSomeData.Endpoint ścieżka wskazująca na endpoint, może zawierać query string np.
/rest/api/1/issue/{{0}}
lub
/rest/api/issue?id={{0}}&param={{1}}
external.rest.<Nazwa serwisu>.<Nazwa endpointa>.RequestType external.rest.TestAPI. GetSomeData.RequestType GET, POST, PUT lub DELETE
external.rest.<Nazwa serwisu>.<Nazwa endpointa>.RequestBody  external.rest.TestAPI. GetSomeData.RequestBody definiuje zawartość BODY, zapisane w notacji JSON, dla metody typu GET
parametr może być pusty albo nie istnieć
np.
{
     „id”: „{{newCountryId}}”,
     „countryName”: „Germany”,
     „capitalName”: „{{newCountryCapital}}”

Przykładowy skrypt sql wstawiający parametr do bazy (SQL SERVER)

INSERT INTO [dbo].[parameters]([parName],[parValue],[parDescription],[parGroup],[parIndex],[parDefaultValue],[parType],[parNewValue],[parModifiedById],[parAcceptedById],[parTab],[parSection],[parTitle])
VALUES
('external.rest.TestAPI.GetSomeData.Endpoint'
,'/rest/api/1/issue/{{0}}'
,''
,'Extension.MyAPIParameters'
,1
,''
,'s'
,''
,NULL
,NULL
,NULL
,NULL
, 'external.rest.<nazwa serwisu>[.<nazwa endpointa>][.<nazwa pomocnicza>]')

 

Uwierzytelnianie w CallRest

Wartość parametru AuthorizationType Nazwa nagłówka odpowiadającego za uwierzytelnianie Wartość nagłówka odpowiadającego za uwierzytelnianie

BASIC

Authorization

Basic <ToBase64({Login};{ APIToken})>

TOKEN

Authorization

Basic <ToBase64({Login};{APIToken})>

BEARER

Authorization

Bearer {APIToken}

NOAUTH

CUSTOM

{AuthorizationHeaderParam}

{APIToken}

 

Przykłady

Przykład 1

 

 

 

 

 

 

 

Przykład 2

 

 

Czy artykuł był pomocny?
2.3 na 5 gwiazdek

4 ratings

5 Stars 0%
4 Stars 25%
3 Stars 25%
2 Stars 0%
1 Stars 50%
How can we improve this article?
How Can We Improve This Article?