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