HTTPRequest
w Godot 4 to węzeł umożliwiający wysyłanie żądań HTTP, takich jak GET, POST, PUT, DELETE i innych, do serwerów zewnętrznych oraz odbieranie odpowiedzi. HTTPRequest
jest szczególnie przydatny do komunikacji z API, pobierania danych, przesyłania plików lub wysyłania danych na serwer.

Cechy HTTPRequest
:
- Obsługa różnych metod HTTP:
HTTPRequest
pozwala na wysyłanie żądań GET, POST, PUT, DELETE itp., co umożliwia komunikację z wieloma rodzajami API. - Asynchroniczność:
HTTPRequest
działa asynchronicznie, co oznacza, że odpowiedzi są odbierane po zakończeniu operacji, nie blokując głównego wątku gry. - Obsługa nagłówków i parametrów: Możesz dodawać nagłówki HTTP i przesyłać parametry w żądaniach, co jest przydatne przy pracy z API wymagającymi autoryzacji lub specyficznych danych.
Jak używać HTTPRequest
w Godot 4
1. Dodanie HTTPRequest
do sceny
- W drzewie scen kliknij „Dodaj węzeł”.
- Wyszukaj
HTTPRequest
i dodaj go do swojej sceny. - Możesz używać
HTTPRequest
bezpośrednio, wywołując metody w skrypcie, aby wysyłać żądania HTTP.
2. Podstawowy przykład żądania GET
Poniższy skrypt przedstawia, jak wysłać proste żądanie GET do API, na przykład do pobrania danych.
extends Node
# Funkcja wysyłająca żądanie GET
func _ready():
var http_request = $HTTPRequest # Używamy węzła HTTPRequest
var url = "https://jsonplaceholder.typicode.com/todos/1" # Przykładowy URL API
http_request.request(url)
# Obsługa odpowiedzi z serwera
func _on_HTTPRequest_request_completed(result, response_code, headers, body):
if response_code == 200:
var data = JSON.parse(body.get_string_from_utf8())
if data.error == OK:
print("Odpowiedź: ", data.result)
else:
print("Błąd w parsowaniu JSON")
else:
print("Błąd HTTP: ", response_code)
Wyjaśnienie kodu:
request(url)
: Wysyła żądanie GET do podanego URL._on_HTTPRequest_request_completed
: Funkcja wywoływana po zakończeniu żądania, która odbiera wynik, kod odpowiedzi HTTP, nagłówki oraz dane odpowiedzi (w formiebody
).- Sprawdzenie odpowiedzi: Po odebraniu odpowiedzi sprawdzamy kod HTTP (200 oznacza sukces) i parsujemy dane JSON, jeśli odpowiedź jest poprawna.
3. Obsługa żądań POST
Żądania POST służą do przesyłania danych na serwer. Można dodać nagłówki, takie jak Content-Type
, oraz przesyłać dane w formie JSON lub form-data.
Przykład żądania POST:
extends Node
func _ready():
var http_request = $HTTPRequest
var url = "https://jsonplaceholder.typicode.com/posts"
# Dane do wysłania
var data = {
"title": "foo",
"body": "bar",
"userId": 1
}
var headers = ["Content-Type: application/json"]
var json_data = JSON.print(data) # Przekształć dane do formatu JSON
# Wysłanie żądania POST
http_request.request(url, headers, true, HTTPClient.METHOD_POST, json_data)
func _on_HTTPRequest_request_completed(result, response_code, headers, body):
if response_code == 201:
print("Dane zostały pomyślnie przesłane:", body.get_string_from_utf8())
else:
print("Błąd podczas przesyłania danych, kod odpowiedzi:", response_code)
Wyjaśnienie kodu:
- Nagłówki: Dodajemy nagłówek
Content-Type: application/json
, informujący serwer, że dane są w formacie JSON. - Przesyłanie danych: Dane są serializowane do formatu JSON i przesyłane jako ciało żądania (parametr
json_data
). - Metoda POST: Używamy metody
HTTPClient.METHOD_POST
do wysłania danych na serwer.
4. Obsługa błędów i wyników HTTPRequest
_on_HTTPRequest_request_completed
zwraca kilka parametrów, które można wykorzystać do obsługi wyników żądania:
result
: Kod wyniku (może być przydatny do debugowania).response_code
: Kod odpowiedzi HTTP (np. 200 dla sukcesu, 404 dla braku zasobu).headers
: Lista nagłówków odpowiedzi.body
: Zawiera treść odpowiedzi (ciało).
5. Zastosowania HTTPRequest
w grach i aplikacjach
- Ładowanie zasobów z serwera:
HTTPRequest
może być używany do pobierania zasobów, takich jak tekstury, modele 3D czy dźwięki z serwera, co umożliwia dynamiczne ładowanie zawartości.
- Komunikacja z API:
- Możesz korzystać z
HTTPRequest
do interakcji z różnymi API, na przykład do pobierania aktualnych wyników, przesyłania statystyk gry, zapisywania wyników w bazie danych itp.
- Integracja z bazami danych lub serwerami gier:
HTTPRequest
może służyć do przesyłania danych z gry, np. wyniku gracza, na serwer lub bazę danych za pomocą API RESTful.
- Wysyłanie i odbieranie informacji o stanie gry:
- Przykładowo, możesz używać
HTTPRequest
do synchronizacji gry z serwerem, przesyłania danych o stanie gry lub odbierania danych od innych graczy.
Dodatkowe ustawienia HTTPRequest
request(url, custom_headers, ssl_validate_domain, method, request_data)
: Główna metoda wysyłania żądań. Możesz kontrolować metodę HTTP, nagłówki, a także dane przesyłane w żądaniu.timeout
: Ustawia maksymalny czas oczekiwania na odpowiedź. Jeśli serwer nie odpowie w określonym czasie, żądanie zakończy się niepowodzeniem.ssl_validate_domain
: Gdy ustawione natrue
,HTTPRequest
sprawdzi poprawność certyfikatu SSL (domyślnietrue
).
Przykład: Wysyłanie żądania GET z parametrami URL
Możesz łatwo dodać parametry URL do żądania GET, jeśli API wymaga parametrów zapytania.
extends Node
func _ready():
var http_request = $HTTPRequest
var url = "https://jsonplaceholder.typicode.com/comments?postId=1"
http_request.request(url)
func _on_HTTPRequest_request_completed(result, response_code, headers, body):
if response_code == 200:
print("Otrzymane dane:", body.get_string_from_utf8())
else:
print("Błąd: kod odpowiedzi", response_code)
Podsumowanie:
HTTPRequest
w Godot 4 to wszechstronne narzędzie do wysyłania żądań HTTP do serwerów zewnętrznych. Pozwala na łatwe przesyłanie danych, pobieranie zasobów, komunikację z API, a także obsługę odpowiedzi i błędów. Dzięki obsłudze różnych metod HTTP, HTTPRequest
jest idealnym rozwiązaniem do tworzenia gier i aplikacji wymagających komunikacji sieciowej.
Dodaj komentarz