CallRest i CallWebSite
Dostępne funkcje, które wywołują REST API w Amodicie
- CallRest – jest uwierzytelnianie ?
- 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
- Przegląd Swagger’a: przykład http://localhost:57659/Help
- Pozyskanie danych do uwierzytelniania
- 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}}¶m={{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