Z API chodzi o to, że masz oddzielną aplikację do backendu, która przyjmuje i zwraca JSONy (tzn. może być XML, albo pewnie i INI, ale JSON teraz najpopularniejszy). A frontend to oddzielna aplikacja. Jeśli mówimy o webie, to teraz jest milion frameworków oraz bibliotek JS do robienia frontendowych aplikacji, takich jak Angular czy React.
Spora różnica w porównaniu z ASP.NET MVC, w którym backend i frontend był w jednej aplikacji.
Z REST chodzi o to, że zamiast jakiegoś web procedure call, czyli HTTP POST do każdej akcji i URLe wstylu: api.com/updateCustomerData
, api.com/orderProducts
, api.com/getTransactions
masz URLe unikalnie wskazujące zasoby, a użycie odpowiedniego HTTP verb mówi czy pobieramy/dodajemy/edytujemy/usuwamy dane. Dlatego masz: GET, POST, PUT, DELETE, a przykładowe URLe w wersji restowej to będą: PUT api.com/customers
i POST api.com/customers/{customerId}/transactions/
, GET api.com/customers/{customerId}/transactions/
. Jak widzisz - składanie zamówienia i przeglądanie historii zamówień ma tutaj ten sam URL, ale różne HTTP verb.
(To takie dość mocne uproszczenie, w końcu trudno jednym zdaniem streścić czyjąś dysertację doktorską.)
Z mikroserwisami chodzi o to, że zamiast tworzyć ogromny system, który ma wiele modułów odpowiedzialnych za różne aspekty całego biznesu, każdym aspektem zajmuje się oddzielny, "mały" serwis. Oddzielnymi mikroserwisami mogą być np.: zarządzanie kontami użytkowników, rejestracja zamówień, przetwarzanie płatności, uwierzytelnianie. To są logicznie oddzielne koncepcje, zaś jeśli chodzi o architekturę to mogą korzystać z kompletnie różnych źródeł danych, integrować się z innymi serwisami zewnętrznymi, więc jest sens je wydzielać jako oddzielne podsystemy.
A blog to nie jest po prostu coś, co da się zrobić sensownie korzystając z mikroserwisów - masz tam tylko jeden kontekt, obiekty biznesowe są ze sobą mocno powiązane. Nie tędy droga.