Backend Flashcards
Czym jest API
API to skrót od “Application Programming Interface”, czyli interfejs programowania aplikacji. Jest to zestaw reguł, protokołów i narzędzi, które umożliwiają różnym programom komunikację i współpracę ze sobą. API definiuje, w jaki sposób programy mogą wymieniać się informacjami i wykonują pewne zadania.
Co to REST API
REST, czyli Representational State Transfer to styl architektury oprogramowania, opierający się o zbiór określonych reguł opisujących jak definiowane są zasoby, a także umożliwiających dostęp do nich. Należy podkreślić, że REST jest stylem architektury oprogramowania, a nie standardem. W przeciwieństwie do protokołu HTTP, na moment pisania artykułu, nie ma żadnego RFC standaryzującego architekturę REST.
Kod 100
Continue: Oznacza, że serwer otrzymał część żądania i prosi o kontynuację.
Kod 200
OK: Żądanie zostało pomyślnie wykonane.
Kod 201
Created: Żądanie zostało pomyślnie wykonane i spowodowało utworzenie nowego zasobu.
Kod 204
No Content: Żądanie zostało pomyślnie wykonane, ale nie ma treści do zwrócenia.
Kod 307
Temporary Redirect: Żądany zasób został tymczasowo przeniesiony na inny URI.
Kod 308
Permanent Redirect: Żądany zasób został trwale przeniesiony na inny URI.
Kod 400
Bad Request: Żądanie zawiera błąd składniowy lub jest niezrozumiałe dla serwera.
Kod 401
Unauthorized: Klient nie jest zautoryzowany do uzyskania dostępu do zasobu
Kod 403
Forbidden: Klient nie ma wymaganych uprawnień dostępu do zasobu.
Kod 404
Not Found: Żądany zasób nie został odnaleziony na serwerze.
Kod 405
Method Not Allowed: Metoda żądania nie jest dozwolona dla danego zasobu.
Kod 408
Request Timeout: Czas oczekiwania na żądanie przekroczony.
Kod 413
Payload Too Large: Żądanie zawiera ładunek (np. dane w ciele żądania) o rozmiarze przekraczającym limit ustalony przez serwer.
Kod 429
Too Many Requests: Klient przekroczył limit liczby żądań w określonym przedziale czasowym.
Kod 500
Internal Server Error: Wewnętrzny błąd serwera, przyczyna jest nieznana.
Kod 501
Not Implemented: Serwer nie obsługuje żądanej metody i nie jest w stanie jej przetworzyć.
Kod 502
Bad Gateway: Serwer pośredniczący otrzymał nieprawidłową odpowiedź od serwera docelowego
Kod 503
Service Unavailable: Serwer jest tymczasowo niedostępny, zwykle ze względu na przeciążenie lub konserwację.
Kod 504
Gateway Timeout: Serwer działa jako brama lub proxy i nie otrzymał odpowiedzi w ustalonym czasie od serwera docelowego.
Jaka jest różnica pomiędzy kodem 301 (Moved Permanently), a kodem 308 (Permanent Redirect)?
Różnica polega na tym, że 301 automatycznie zmienia metodę żądania na GET lub HEAD, podczas gdy 308 zachowuje metodę żądania oryginalnego żądania.
Authorization (autoryzacja) vs Authentication (uwierzytelnianie)
Autentykacja to sprawdzanie tożsamości, czy dana osoba jest tym, za kogo się podaje. Autoryzacja to sprawdzanie uprawnień, czy dana osoba ma dostęp do konkretnych zasobów, obszarów lub funkcji. Autentykacja jest jak sprawdzanie tożsamości gości na wejściu do klubu, a autoryzacja jest jak sprawdzanie, czy mają oni uprawnienia do wejścia do poszczególnych stref klubu.
Różnica między PUT a PATCH
PUT aktualizuje cały obiekt (nie tworzy nowego obiektu tak jak to robi POST), a PATCH aktualizuje tylko część tego obiektu albo jedno pole
Wymień metody żądań HTTP
GET, POST, PUT, PATCH, DELETE
ASGI vs. WSGI
WSGI jest przeznaczone dla tradycyjnych aplikacji obsługujących żądania HTTP w sposób sekwencyjny, podczas gdy ASGI jest bardziej elastycznym interfejsem, który obsługuje asynchroniczne żądania i różne protokoły komunikacyjne.
Co zawiera nagłówek żądania (request header)?
- Metoda żądania: Nagłówek może zawierać informację o tym, jakie jest zamierzenie związane z żądaniem, czyli czy chcesz pobrać informacje (metoda GET), wysłać dane (metoda POST) czy też coś zaktualizować (metoda PUT lub PATCH) lub usunąć (metoda DELETE).
- Adres docelowy: Nagłówek zawiera również adres, do którego wysyłane jest żądanie. Podobnie jak na kopercie listu, gdzie umieszczasz adres odbiorcy, nagłówek zawiera adres serwera, do którego chcesz się połączyć.
- Nagłówki dodatkowe: Oprócz podstawowych informacji, nagłówek może zawierać również różne dodatkowe informacje, takie jak informacje o akceptowanych typach danych (np. JSON, XML), preferencje językowe, ciasteczka (cookies) i wiele innych. Te informacje pomagają serwerowi lepiej zrozumieć twoje żądanie i dostosować odpowiedź.
Z czego składa się request (żądanie)?
- Metoda żądania: Jest to jak pytanie, które zadajesz obsłudze klienta, aby powiedzieć, czego dokładnie oczekujesz. Możesz użyć różnych metod, takich jak “GET” (pobierz), “POST” (wyślij), “PUT” (aktualizuj), “DELETE” (usuń) itp. Metoda żądania określa, jakie działanie chcesz podjąć.
- Adres URL: To jak podanie adresu pizzerii, do której chcesz zadzwonić. Adres URL (Uniform Resource Locator) określa, gdzie znajduje się żądany zasób w internecie. Na przykład, “https://www.pizzeria.com/menu” może być adresem URL strony menu pizzerii.
- Nagłówki (Headers): To jak informacje, które przekazujesz obsłudze klienta, aby dostarczyć dodatkowe informacje na temat twojego zamówienia. Nagłówki mogą zawierać informacje, takie jak “Content-Type” (typ danych wysyłanych w ciele żądania), “Authorization” (uwierzytelnienie), “User-Agent” (informacje o przeglądarce lub aplikacji, która wysyła żądanie) i wiele innych.
- Ciało żądania (Body): Jest to jak lista składników, którą przekazujesz obsłudze klienta, aby przygotować twoje zamówienie. Ciało żądania może zawierać różne rodzaje danych, takie jak formularze, dane JSON lub pliki. Zawartość ciała żądania zależy od rodzaju żądania i tego, co chcesz przekazać serwerowi.
- Parametry URL: To jak dodatkowe informacje, które podajesz obsłudze klienta w trakcie zamawiania. Parametry URL są dodawane do adresu URL jako część zapytania i mogą zawierać informacje, takie jak “id” (identyfikator) lub “page” (numer strony) itp.
Czym jest CORS i jak ma się do preflight request’a?
Cross-Origin Resource Sharing (CORS) to mechanizm oparty na nagłówku HTTP, który umożliwia serwerowi wskazanie dowolnego źródła (domeny, schematu lub portu) innego niż jego własne, z którego przeglądarka powinna zezwolić na ładowanie zasobów. CORS opiera się również na mechanizmie, za pomocą którego przeglądarki wysyłają żądanie „przeglądu wstępnego” do serwera obsługującego zasób z różnych źródeł, aby sprawdzić, czy serwer zezwoli na rzeczywiste żądanie. W tej inspekcji wstępnej przeglądarka wysyła nagłówki wskazujące metodę HTTP oraz nagłówki, które zostaną użyte w rzeczywistym żądaniu.
Czym jest HTTP?
Hypertext Transfer Protocol (HTTP) to protokół warstwy aplikacji do przesyłania dokumentów hipermedialnych, takich jak HTML. Został zaprojektowany do komunikacji między przeglądarkami internetowymi a serwerami WWW, ale może być również wykorzystywany do innych celów. HTTP jest zgodny z klasycznym modelem klient-serwer, w którym klient otwiera połączenie w celu wysłania żądania, a następnie czeka na odpowiedź. HTTP jest protokołem bezstanowym, co oznacza, że serwer nie przechowuje żadnych danych (stanu) między dwoma żądaniami.
Czym jest cookie?
Plik cookie HTTP (plik cookie sieciowy, plik cookie przeglądarki) to mały fragment danych wysyłany przez serwer do przeglądarki internetowej użytkownika. Przeglądarka może zapisać plik cookie i wysłać go z powrotem na ten sam serwer z późniejszymi żądaniami. Zazwyczaj plik cookie HTTP służy do stwierdzenia, czy z tej samej przeglądarki pochodzą dwa żądania — na przykład utrzymanie zalogowania użytkownika. Zapamiętuje informacje stanowe dla bezstanowego protokołu HTTP.