HTTP methods z Go i MongoDB – część 1 – POST

W poprzednich dwóch częściach było małe co nieco o języku GO oraz MongoDB. Czas scalić te dwie odrębne do tej pory funkcjonalności za pomocą HTTP methods. Czas na poznanie pierwszej z nich, czyli metody  POST.

HTTP methods – POST

Stworzenie endpointu w Go, dzięki któremu będziemy mogli zapisać nasze produkty do bazy danych MongoDB można podzielić na cztery etapy: tworzenie obiektu, przygotowanie obiektu, otworzenie połączenia z bazą danych oraz zapis do bazy. Poniżej przedstawiam całą metodę create(). Na razie nie skupiam się nad optymalizacją czy walidacją.  Chcę po prostu, aby metoda robiła dokładnie to co sobie założyłem, czyli żeby działała.

Opis działania

Z pomocą pakietu net/http tworzymy metodę create, która jako parametry otrzymuje http.ResponseWriter i *http.Request. Następnie, na podstawie stuktury Product, tworzymy lokalny byt o tej samej nazwie.

Dzięki pakietowi encoding/json mamy możliwość stworzenie dekodera i zdekodowanie naszego produktu, poprzez przekazanie adresu naszego produktu. Z kolei biblioteka gopkg.in/mgo.v2/bson, pozwala nam stworzyć unikalny klucz ID, który dołączamy do produktu.

Sesję z bazą danych otwieramy poprzez wcześniej przygotowaną metodę GetSession z lokalnego pakietu service. Wybieramy bazę i kolekcję i dodajemy produkt.

Pamiętajmy o nagłówkach responseWriter.Header().Set("Content-Type", "application/json") oraz o odpowiedzi responseWriter.WriteHeader(201). Teraz możemy zenkodować obiekt i przygotować do wyświetlenia. Przy tworzeniu obiektu wykorzystamy blank identifier. Do wysłania danych wykorzystamy znany już pakiet fmt, a właściwie metodę Fprintf.

Podsumowanie

Endpoint działa poprawnie, co prezentuje screen z Postmana zamieszczony poniżej. Jak wspominałem wcześniej brakuje walidacji, brakuje również testów. Zależało mi tylko na napisaniu działającej metody, która skomunikuje moje api z bazą danych. Na usprawnienia i refaktoryzację przyjdzie czas później.

Postman - POST method- HTTP

 

Dawid Ryłko

Lubię dobre filmy, gry oraz kawę. W pracy front-end, po godzinach wszystko inne.

 
  • Błażo

    Dobry wybór z tym Go, szczególnie, że piszesz backend od zera. Czuję się zainspirowany i czekam na więcej Go. Zostawiam też linki dla leniwych do przykładowych webowych frameworków Go:
    https://echo.labstack.com/
    http://iris-go.com/

    “Zenkodować” – fajne słowo 😉

  • Dzięki za feedback i za czujność, to mobilizuje. Frameworkom na pewno warto się przyjrzeć, ale na to przyjdzie czas później 🙂

Współpraca:
Polski Front-End