En webbtjänst för att geotagga ip-adresser
Du skall bygga en webbtjänst som letar fram den geografiska positionen för en ip-adress, inklusive ortsnamn. Du använder dig av ett externt API för att göra uppslagningen av ip-adressen.
Innan du gör uppslaget så validerar du ip-adressen så att den är korrekt.
Du skall bygga dels en traditionell webbtjänst där användaren kan mata in ip-adressen i ett formulär som postas och en resultatsida visar upp resultatet. Du skall också bygga ett REST API med samma funktionalitet där frågor och svar sker via JSON.
Du lägger extra kraft på att organisera din kod i kontroller och modell-klasser och du skapar enhetstester som som når hög kodtäckning, kanske 100%?
#Förkunskaper
Du har löst uppgiften “En kontroller för att validera ip-adresser”.
#Introduktion och förberedelse
Följande steg hjälper dig att komma igång med uppgiften.
#Gör en plan
Innan du startar så fundera igenom uppgiften och skissa på vilka kontroller-klasser och modell-klasser du tror dig behöva.
Skissa på ett papper med penna. När du är klar med uppgiften, gå tillbaka till din skiss och fundera på hur duktig du var på att skissa den slutliga formen för kodlösningen.
#MVC
Koda enligt MVC.
Tänk tunna kontrollers.
Tänk dumma vyer,
Tänk återanvändbara modell-klasser, i rimlig nivå till uppgiftens omfattning.
#Enhetstesta
Se till att alla dina klasser omfattas av enhetstester. Försök nå komplett kodtäckning men välj ambitionsnivå kontra tiden du har att tillgå.
#Extern tjänst för geotagga ip-adresser
Du skall använda en extern tjänst för att koppla en ip-adress mot en geografisk position. Följande är föreslagna men du kan välja annat alternativ om du vill.
Som en extra och optionell funktinalitet kan du använda en karta för att komplettera ditt resultat. Du kan till exempel använda följande karttjänst.
#Krav
Skapa en sida där du kan mata in en ip-adress. Man kan posta formuläret och få ett svar på ip-adressens geografiska position, förutsatt att ip-adressen är giltig.
Se till att användarens ip-adress är ifylld i formuläret från start, som default-värde.
Resultatet skall (minst) visas med ip-adressen, om den är av typen ip4 eller ip6, dess geografiska position och ort/land som ligger närmast.
Ovan sida lägger du till i navbaren.
Skapa ett REST API som erbjuder samma funktionalitet. Man kan posta en ip-adress och svaret blir en JSON-struktur med samma innehåll och resultat som ovan.
Bygg ut din sida så att du förklarar hur man jobbar med ditt JSON API och lägg till så det finns testroutes man kan klicka på för att se att JSON API:et fungerar.
Lägg till enhetstester för din kod. Försök nå 100% kodtäckning, men det är inte ett absolut krav.
Kör
make test
för att kolla att du inte har några valideringsfel och att testfallen går igenom.Gör en
dbwebb publish redovisa
och kontrollera att det fungerar på studentservern.Committa alla filer och lägg till en tagg (2.0.*).
Pusha upp repot till GitHub, inklusive taggarna.
#Extrauppgifter
Om du har tid och lust så gör du följande extrauppgifter.
- Presentera mer detaljer om själva positionen, adressen. Du får mycket information från tjänsten, men vad kan du göra med den?
- Lägg till en karta på webbplatsens svar och i REST API:et lägger du till en länk som leder till en karta.
#Tips från coachen
Lycka till och hojta till i forumet om du behöver hjälp!
#Revision history
- 2018-11-06: (A, mos) Första utgåvan.