REST API Flashcards

1
Q

Czym jest API?

A

API - Application Programming Interface

API sposób komunikacji pomiędzy różnymi elementami oprogramowania.

Web API to zestaw odpowiednio przygotowanych metod zwykle dostępnych w postaci adresów URI (endpoints).

Przykładowy endpoint i odpowiedź:
GET https://overment.com/movies
[
{
“title”: “C.B Strike”
“genre”: “thriller”
“year”: “2017

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Co to jest interfejs?

A

Interfejs użytkownika
np. klawiatura komputera, ekran telefonu, interfejs aplikacji

Interfejs Programistyczny

Interfejs fizyczny
urządzenie logiczne umożliwiające nawiązanie połączenia

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Czym jest REST?

A

REST - Representational; State Transfer

REST to standard określający zasady projektowania API

Web API opiera sięo protokół HTTP. Np. popularne akcje CRUD odpowiadają metodom HTTP.

C - create (POST)
R -read (GET)
U - update (PUT)
D - delete (DELETE)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Jaka jest różnica pomiędzy PUT i PATCH

A

Metody PUT i PATCH służą do aktualizowania istniejącego zasobu. Różnica między nimi polega na tym, że Funkcja PUT podmienia cały zasób, podczas gdy PATCH określa tylko konkretne zmiany.

Podstawowa różnica pomiędzy metodą POST a PUT jest taka, że metody PUT używamy, gdy znamy pełny adres URL zasobu na którym wykonujemy zapytanie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

6 zasad REST

A

1 Uniform Interface

ustandaryzowana komunikację pomiędzy klientem a serwerem

wyraźnie zaznaczony podział pomiędzy aplikacją działającą po stronie klienta i serwera

każde zapytanie ze strony klienta musi zawierać komplet informacji koniecznych do jego poprawnego zakończenia

API powinno wspierać cacheowanie danych w celu zwiększenia pamięci

*Cache - przechowywanie danych w pamięci podręcznej. Dzięki pamięci podręcznej zapis i odczyt danych odbywa się kilkukrotnie szybciej, niż miałoby to miejsce przy korzystaniu z samej pamięci RAM.

system powinien być zaprojektowany w taki sposób, aby klient wysyłający zapytanie mógł uzyskać odpowiedź bez szczegółowej wiedzy o tym, co się dzieje po drugiej stronie tj. serwer zanim przygotuje odpowiedź dla klienta może wykonać kilka dodatkowych połączeń (akcji), o których klient nie musi wiedzieć

zasada ta przewiduje możliwość wysłania fragmentów kodu (np. JabaScript), który może być wykonany po stronie klienta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Czym jest zasób?

A

Odpowiedź jest prosta, lecz nie łatwa.

Zasób to pojęcie abstrakcyjne Dowolna informacja, która może posiadać nazwę, może być zasobem o ile spełnia następujące kryteria

Jest rzeczownikiem (noun). Np. user comment, movie.

  • Jest unikatowa Wskazuje na konkretną rzecz Np rower nie jest zasobem (zbyt ogólny), lecz rower kolegi Pawła już tak)
  • Może być przedstawiona w formie danych. Np. Mądrość nie jest zasobem. Lecz jej definicja może być
  • Posiada przynajmniej jeden adres URI, pod którym jest dostępny URI jednocześnie jest nazwą zasobu jak adresem

Podczas interakcji z API wykorzystujemy zasoby Ich odpowiednie nazewnictwo struktura pozytywnie wpływają na użyteczność oraz elastyczność, ułatwiając rozbudowę modyfikację aplikacji. Zrozumienie czym jest zasób ułatwi Ci zarówno projektowanie, jak i wykorzystywanie API.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Jak nazywać zasób?

A
  • zasobem mają być obiekty odłączone od akcji
  • powinny być to rzeczowniki
  • w liczbie mnogiej

Obiekty vs. Akcje

Zasoby powinny być zaprojektowane w taki sposób, aby pozostawały odłączone od akcji Dzięki temu możliwe jest wykonanie wielu akcji na pojedynczym zasobie Np.

Rzeczowniki vs. Czasowniki
Jednym ze sposobów upewnienia się, że zasób jest odłączony od akcji, jest użycie rzeczownika w nazwie Jeśli w adresie URI zasobu znajduje się czasownik, np. /createMovie lub /deleteUser istnieje szansa że ten zasób jest za bardzo powiązany z konkretną akcją

Liczba pojedyncza vs. Liczba mnoga
W nazwach zasobów zawsze używaj liczby mnogiej, np. /users lub /movies zamiast /user lub /movie Jest to dobra praktyka, która zwiększa czytelność Twojego API. Ostatecznie ta zasada jest dyskusyjna. Obiektywnie Twoje API powinno być zbudowane konsekwentnie i spójnie.

Np.

DOBRZE:
GET /users # Pobierz listę użytkowników POST /users # Dodaj nowego użytkownika DELETE /users # usuń wszystkich użytkowników

ŹLE:
GET /getUsers # Pobierz listę użytkowników
POST /addUser # Dodaj nowego
DELETE /users/delete # usuń wszystkich

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Jak reprezentować dane?

A

JSON/YAML/XML

Zasób możemy przedstawić za pomocą danych. Najpopularniejszym formatem danych wykorzystywanym w REST API jest JSON Możemy też spotkać wsparcie formatów YAML oraz XML

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Czym jest zasób a czym kolekcja zasobów

A

Zasób może być pojedynczym dokumentem lub kolekcją. Np. Lista uzytkowników “users” to kolekcja zawierająca pojedyncze zasoby “user”

Przykładowy adres kolekcji:
/api/v1/users lub /api/v1/movies

Przykładowy adres zasobu:
/api/v1/users/:id
w tym przypadku zasób jest identyfikowany unikatowym identyfikatorem (ID)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wyjaśnij, co w następującej strukturze URL

A

/api/v1/users/:id

Punkt wejścia API (entry point):
/api/v1/

Kolekcja zasobów:
users/

Identyfikator zasobu:
:id

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Czym różni się URI od URL? To

A

Podstawową różnicą między nimi jest fakt, że URL z definicji wskazuje lokalizację, tj. miejsce, z którego dany zasób można ściągnąć (adres) i sposób, w jaki można to zrobić (protokół, np. http, ftp, …). URI służy tylko do identyfikacji i niekoniecznie musi wskazywać miejsce skąd coś można ściągnąć.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Filtrowanie danych

A

Parametry adresu URL (query string)
API powinno umożliwiać zarówno sortowanie filtrowanie zasobów Dodatkowo często będziesz chciał pobrać tylko wybrane informacje o zasobie Zamiast tworzyć w tym celu dodatkowy endpoint, wykorzystaj parametry adresu URL (query string). Parametry są częścią adresu URL i występują po znaku “?” w formacie nazwa=wartość Kolejne parametry oddzielamy znakiem ampersand (“&”).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Relacje między zasobami

A

Relacje pomiędzy zasobami
Go deeper!

Pomiędzy zasobami mogą zachodzić relacje, które wpływają na strukturę adresu URL. Np. zasób /users/:id może posiadać relację z zasobem /comments. W tej sytuacji URL wygląda następująco /users/id/comments. Jeśli to możliwe, zadbaj o to, aby nie tworzyć relacji powyżej 2-go poziomu. Znacznie utrudnia to pracę z API

/api/v1/users/:id/comments

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Dobre praktyki URL

A

Konsekwencja jest kluczem

Projektując adresy URL zawsze staraj się by byty one czytelne intuicyjne zarówno dla Ciebie jak wszystkich, którzy będą w przyszłości korzystać bądź rozwijać Twoje API. W tym procesie najbardziej kluczowa jest konsekwencja i trzymanie się podstawowych zasad

• Lower-case: Zawsze używaj małych liter w adresach URL Unikniesz w ten sposób niepotrzebnych błędów i zwiększysz czytelność adresów.

• Myślniki - W celu zwiększenia czytelności, wykorzystaj myślniki /featured-movie jest czytelniejsze od /featuredmovie • Underscore”. Niektóre czcionki systemowe nie wyświetlają poprawnie znaku. Z tego powodu staraj się ich unikać na rzecz myślników-

• Końcowy slash “/” Nie używaj na końcu adresu URL znaku / unikniesz niepotrzebnej dezorientacji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Czym są metody HTTP?

A

Rola metod

Metoda HTTP jest częścią zapytania HTTP odpowiedzialną za określenie akcji, która ma zostać podjęta w wyniku zapytania HTTP

Klient:
GET /movies/594
Serwer:
function show(id) { … }

Klient:
POST/movies
Serwer:
function store(request) { … }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Jakie znasz metody HTTP i do czego one służą?

A

Metody HTTP

  • GET - Odczytuje reprezentację zasobu. Zapytanie GET powinno wyłącznie zwracać dane
  • POST Wykorzystywane w celu przesyłania danych do wskazanego zasobu
  • PUT - Aktualizuje całą reprezentację zasobu z wykorzystaniem przesłanych danych.
  • PATCH - Aktualizuje część reprezentacji zasobu z wykorzystaniem przesłanych danych.
  • DELETE - Usuwa wskazany zasób lub kolekcję zasobów
  • HEAD- Pełni identyczną rolę jak GET jednak w tym przypadku odpowiedź nie zawiera treści (body), lecz nagłówki
  • OPTIONS - Zwraca informację o możliwych opcjach dostępnych na danym zasobie
17
Q

Czym jest Idempotencja

A

Idempotencja to cecha operacji zwracającej ten sam wynik niezależnie od tego ile razy została wykonana W przypadku Web API, zapytanie można nazwać idempotentnym, gdy jego pierwsze i kazde kolejne wykonanie nie generuje różnych zmian po stronie serwera. Spośród dostępnych metod HTTP idempotente nie są metody POST oraz PATCH Ważne: Odpowiedzi na zapytanie mogą się od siebie różnić. Na serwerze mogą równiez zostać zapisywane informacje statystyczne o zapytaniu

18
Q

Jakie metody HTTP służą do odczytywania danych?

A

GET oraz OPTIONS

19
Q

Jakie metody HTTP służą do zapisywania danych?

A

POST
PUT

20
Q

Co to jest request payload

A

to tzw. ładunek, czyli dane przesyłane razem z zapytaniem POST

21
Q

Statusy HTTP

A

Rola statusów HTTP

Status HTTP to trzycyfrowa liczba określająca w jaki sposób zostało zrealizowane (lub nie) zapytanie HTTP Na podstawie statusu aplikacja może wyświetlić stosowną informację użytkownikowi

Grupy statusów
Każdy status HTTP został przydzielony do grupy, na podstawie której jesteśmy w stanie określić jego przybliżone znaczenie

Wyróżniamy następujące grupy

• 1xx Odpowiedzi informacyjne Zwykle dotyczą samego środowiska niz aplikacji, np. 111 Connection Refused

• 2xx- Odpowiedzi sygnalizujące powodzenie zapytania, np. 200 OK

• 3xx - Odpowiedzi informujące o przekierowaniu lub konieczności wysłania zapytania na inny adres, np. 301 Moved permanently

• 4xx - Błąd spowodowany działaniem użytkownika, np. 404 Not found

• 5xx Błąd spowodowany nieprawidłowym działaniem aplikacji lub serwera, np. 500 Server error

Możesz to także zapamiętać tak:
1xx: hold on
2xx: here you go
3xx: go away
4xx: you fuked up
5xx: I fu
ked up

22
Q

Popularne statusy HTTP

A

200 OK, 404 Not Found, 500 Internal

201 Created, 304 Not Modified, 400 Bad Request, 401 Unauthorized, 403 Forbidden

23
Q

Co to jest MVC?

A

Model View Controller
sposób strukturyzacji aplikacji

24
Q

Kto szuka?

A

mechanizm mySQL/MongoDB
Popularne silniki baz danych oferują opcję przeszukiwania zasobów. Świetnie sprawdzają się w przypadku prostych wyszukiwarek

Silniki wyszukiwania (Elasticsearch, Solr)
W sytuacji gdy do gry wchodzą skomplikowane zapytania i/lub duze ilości danych, warto rozważyć wykorzystanie tzw. silników wyszukiwania ich działanie można porównać do bazy danych stworzonej właśnie z myślą o wyszukiwaniu

Usługi takie jak Algolia czy AWS Cloudsearch
Podobnie jak silniki wyszukiwania, ustugi w chmurze oferują rozbudowane mozliwości wyszukiwania. W tym przypadku kwestia infrastruktury leży po stronie usługodawcy

Biblioteki client-side
W niektórych przypadkach musimy mieć mozliwość przeszukiwania danych po stronie klienta (np. w trybie offline). W tej sytuacji świetnie sprawdzą się biblioteki takie jak Elasticlunr czy lunrjs.

25
Q

Czym różni się autoryzacja od uwierzytelnienia?

A

Jaka jest różnica?

Uwierzytelnienie (eng. authentication) polega na zalogowaniu użytkownika. Natomiast autoryzacja to proces weryfikowania prawa dostępu użytkownika do wskazanego zasobu.

Uwierzytelnienie
Kim jesteś?

Autoryzacja
Czy masz prawo dostępu do…

26
Q

Co to jest token?

A

Ciąg znaków zawierający zaszyfrowana informacje.

Zwykle używa się do tego sesje albo JSON Web Token