Często od naszych partnerów otrzymujemy zapytania dotyczące wykonywania przez techników operacji na API bezpośrednio z interface aplikacji. Większość zapytań dotyczy tego, jak bezpiecznie ukryć klucz technika potrzebny do wykonania działania. Rozwiązanie dla większości Waszych zapytań jest proste – wykonajcie zapytanie na uprawnieniach zalogowanego użytkownika. Jak to zrobić? Pokażemy Wam to krok po kroku 🙂
Zanim zaczniemy…
Zanim przejdziemy do tworzenia przykładowego przycisku przyjmijmy sobie małe założenie – chcemy dodać przycisk „Zmień tryb na telefon”, które wykona modyfikację pola „Tryb” (ang. „Mode”) na wartość „Telefon”. Może nie jest to interesujące zadanie ale pozwoli ono, na zrozumienie działania API w kontekście zalogowanego użytkownika.
Tworzenie przycisku
Sam proces tworzenia przykładowego przycisku opisaliśmy tutaj. Większość z Was zapewne już wykorzystuje ten lub podobny sposób tworzenia dodatkowych przycisków – nie będziemy więc się tym zajmować od początku.
Mamy więc przykładowy kod, który doda przycisk:
if(pageLocationHref.indexOf('WorkOrder.do?woMode=viewWO&woID=') !=-1 ){
//Button code
var buttonCode = "<button id=\"API_EditModeTelephone\" class=\"btn btn-default btn-xs\" rel=\"uitooltip\" title=\"Zmień tryb na telefon\" onclick=\"editModeTelephone()\">Zmień tryb na telefon</button>";
//Append button to actionsBar
jQuery('#actionsBar').append(buttonCode);
}
Piszemy kod – API Request
Mamy więc już przycisk. Ale co dalej? Teraz musimy wykonać API Request. W naszym przykładzie wykorzystamy funkcję jQuery.Ajax, która wykonuje asynchroniczne zapytanie do naszego API. Tak jak w przypadku każdej innej edycji z poziomu API musimy przygotować zawartość naszego zapytania. W naszym przypadku jest to bardzo krótki JSON:
{
"request": {
"mode": "Telefon"
}
}
Teraz musimy przygotować funkcję, która wykona operację po naciśnięciu naszego przycisku:
function editModeTelephone(){
var inputData = 'input_data={"request":{"mode":"Telefon"}}';
var editResult = executeRequest(inputData);
};
function executeRequest(requestData){
var result = jQuery.ajax({
type: 'POST',
url: '/api/v3/requests',
data: requestData,
dataType: 'json',
success: function(data){console.log("Success "+ data);},
failure: function(errMSG){console.log("Failure "+ errMSG);}
});
};
Scalamy wszystko to, co napisaliśmy
Mamy już wszystkie części naszego kodu. Teraz nie pozostaje nic innego, jak złożyć to wszystko w jedną całość. Całość przedstawia się następująco:
if(pageLocationHref.indexOf('WorkOrder.do?woMode=viewWO&woID=') !=-1 ){
//Button code
var buttonCode = "<button id=\"API_EditModeTelephone\" class=\"btn btn-default btn-xs\" rel=\"uitooltip\" title=\"Zmień tryb na telefon\" onclick=\"editModeTelephone()\">Zmień tryb na telefon</button>";
//Append button to actionsBar
jQuery('#actionsBar').append(buttonCode);
function editModeTelephone(){
var inputData = 'input_data={"request":{"mode":"Telefon"}}';
var editResult = executeRequest(inputData);
};
function executeRequest(requestData){
var result = jQuery.ajax({
type: 'POST',
url: '/api/v3/requests',
data: requestData,
dataType: 'json',
success: function(data){console.log("Success "+ data);},
failure: function(errMSG){console.log("Failure "+ errMSG);}
});
};
}
Jeśli wszystko poszło po naszej myśli to pole Mode w naszym zgłoszeniu powinno zostać zaktualizowane. Informację na temat wykonania samego zapytania znajdziecie w konsoli przeglądarki 🙂
Na zakończenie…
Powyższy kod to jedynie przykład wykonywania zapytań API w kontekście zalogowanego użytkownika. Jest to swego rodzaju baza do zrozumienia działania i możliwości jakie daje nam takie wykonywanie zapytań. Co jeszcze możemy osiągnąć dzięki takiemu rozwiązaniu? To już pozostawiamy Wam 🙂