Featured image of post GATE HTTP (1/2) – request

GATE HTTP (1/2) – request

Jak działa moduł GATE HTTP od Grentona - testy i przykłady użycia obiektu Request.

Grenton Gate Http Grenton Gate Http

Po jakimś czasie zacząłem się interesować modułem GATE HTTP od Grentona. W ramach posta zrobiłem kilka prostych testów, które pozwoliły mi zrozumieć jak działa moduł HTTP GATE. Może komuś się przyda.

Moduł pozwala dodać dwa typy obiektów: Request – służący do wysyłania zapytań HTTP oraz Response – służący jako prosty server HTTP. W tym wpisie zajmę się obiektem Request, ponieważ za to on pozwala na proste integracje, np. z pogodą.

Postawiłem sobie prosty serwer HTTP napisany w Pythonie i zacząłem wysyłać do niego zapytania za pomocą modułu GATE HTTP. Serwer stoi pod adresem 192.168.0.51 na porcie 8080.

Typy requestów

Przypadek 1 (request type none)

GET request bez nagłówków Content-Type. Rezultat: serwer otrzymał zapytanie z parametrami queryString.

Przypadek 2 (request type text)

Zmiana typu na text (1) dodaje nagłówek: Content-Type: text/plain

Przypadek 3 (request type json)

Typ json (2) dodaje nagłówek: Content-Type: application/json

Przypadek 4 (request type xml)

Typ xml (3) dodaje nagłówek: Content-Type: text/xml

Przypadek 5 (request form data)

Typ form-data (4) dodaje nagłówek: Content-Type: application/x-www-form-urlencoded

Niestandardowe nagłówki

Można definiować własne nagłówki za pomocą tablicy:

1
2
3
headers = {}
headers["Access-Token"] = "bearer 1234"
GATE->RequestObject->SetRequestHeaders(headers)

Nagłówki Content-Type są dodawane po nagłówkach użytkownika, bez nadpisywania.

POST z danymi

Wysłanie POST z body: “text, text, text” i nagłówkami działa prawidłowo. Content-Length wynosi 16 bajtów.

Uwaga: GATE nie konwertuje automatycznie tablic Lua na JSON czy XML. Aby wysłać sformatowane dane, należy użyć zewnętrznych bibliotek.

Przykład - OpenWeatherMap API

Wysyłając GET request z responseType = 2 (JSON), odpowiedź jest parsowana do tablicy Lua:

1
2
3
4
-- Dostęp do pól odpowiedzi
temp = body.main.temp
pressure = body.main.pressure
icon = body.weather[1].icon

Podsumowanie

Wydaje mi się, że przedstawiłem większość najciekawszych przypadków jak zachowuje się obiekt Request. Typy requestu głównie dodają nagłówki. Dla konwersji danych można użyć bibliotek JSON i XML:

Instrukcja Grentona: GATE-HTTP User Manual

Zbudowano z Hugo
Motyw Stack zaprojektowany przez Jimmy