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 formie body
).
- 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 na true
, HTTPRequest
sprawdzi poprawność certyfikatu SSL (domyślnie true
).
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.
Published using WordPress Blurt Publisher from https://godot.com.pl.