Differences
This shows you the differences between two versions of the page.
park_quiz [2018-02-01 22:03] Joakim Forsgren |
park_quiz [2022-07-18 13:20] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Parkquiz ====== | ||
- | Uppgift i Programmering 2 och Webbserverprogrammering 1 | ||
- | |||
- | Denna uppgift är ett samarbete mellan kurserna Programmering 2 och Webbserverprogrammering 1. | ||
- | |||
- | ---- | ||
- | |||
- | =====Steg 1===== | ||
- | ===Programmering 2=== | ||
- | - Skapa ett GUI för att först logga in och få tillbaka token om det gick bra (sparas). \\ Har du inte gjort ditt eget rest-API kan du testa med den url som finns nedan. | ||
- | - Skapa sedan frågor med fyra svarsalternativ, | ||
- | - Skicka till servern med POST. \\ Har du inte gjort ditt eget rest-API kan du testa med den url som finns nedan. | ||
- | - Ta emot statuskod och visa upp om det lyckades eller inte, alternativt använd dig av undantag som genereras av GSON. | ||
- | - Logga ut ska finnas som dödar token (tar bort det sparade värdet, anrop till servern behövs inte). | ||
- | |||
- | För att skicka information till servern använder vi den klass som hittas [[http:// | ||
- | För att tolka datan vi får från servern (Json) använder vi oss av Gson som kan laddas hem [[http:// | ||
- | För att få iordning klasser för tolkning av Gson kan [[http:// | ||
- | |||
- | |||
- | ===Webbserverprogrammering 1=== | ||
- | I denna kurs ska vi bygga ett REST-api med några endpoints. Vi måste även designa en databas för att lagra data i. Tips kan vara att installera ett plugin i chrome för att kunna undersöka sitt API, t.ex. Restlet. | ||
- | |||
- | Ni ska jobba utifrån denna {{ :: | ||
- | |||
- | - Designa en databas för att hantera användare, kategorier och frågor.< | ||
- | -- phpMyAdmin SQL Dump | ||
- | -- version 4.2.7.1 | ||
- | -- http:// | ||
- | -- | ||
- | -- Värd: localhost | ||
- | -- Tid vid skapande: 01 feb 2018 kl 21:59 | ||
- | -- Serverversion: | ||
- | -- PHP-version: | ||
- | |||
- | SET SQL_MODE = " | ||
- | SET time_zone = " | ||
- | |||
- | -- | ||
- | -- Databas: `quiz` | ||
- | -- | ||
- | |||
- | -- -------------------------------------------------------- | ||
- | |||
- | -- | ||
- | -- Tabellstruktur `categories` | ||
- | -- | ||
- | |||
- | CREATE TABLE IF NOT EXISTS `categories` ( | ||
- | `id` int(11) NOT NULL, | ||
- | `category` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_swedish_ci NOT NULL | ||
- | ) ENGINE=InnoDB | ||
- | |||
- | -- -------------------------------------------------------- | ||
- | |||
- | -- | ||
- | -- Tabellstruktur `questions` | ||
- | -- | ||
- | |||
- | CREATE TABLE IF NOT EXISTS `questions` ( | ||
- | `id` int(11) NOT NULL, | ||
- | `category_id` int(11) NOT NULL, | ||
- | `question` varchar(255) COLLATE utf8mb4_swedish_ci NOT NULL, | ||
- | `option1` varchar(255) COLLATE utf8mb4_swedish_ci NOT NULL, | ||
- | `option2` varchar(255) COLLATE utf8mb4_swedish_ci NOT NULL, | ||
- | `option3` varchar(255) COLLATE utf8mb4_swedish_ci NOT NULL, | ||
- | `option4` varchar(255) COLLATE utf8mb4_swedish_ci NOT NULL | ||
- | ) ENGINE=InnoDB | ||
- | |||
- | -- -------------------------------------------------------- | ||
- | |||
- | -- | ||
- | -- Tabellstruktur `users` | ||
- | -- | ||
- | |||
- | CREATE TABLE IF NOT EXISTS `users` ( | ||
- | `id` int(11) NOT NULL, | ||
- | `login` varchar(255) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL, | ||
- | `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL, | ||
- | `token` varchar(255) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL, | ||
- | `token_datetime` datetime NOT NULL | ||
- | ) ENGINE=InnoDB | ||
- | |||
- | -- | ||
- | -- Index för dumpade tabeller | ||
- | -- | ||
- | |||
- | -- | ||
- | -- Index för tabell `categories` | ||
- | -- | ||
- | ALTER TABLE `categories` | ||
- | ADD PRIMARY KEY (`id`); | ||
- | |||
- | -- | ||
- | -- Index för tabell `questions` | ||
- | -- | ||
- | ALTER TABLE `questions` | ||
- | ADD PRIMARY KEY (`id`), ADD KEY `category_id` (`category_id`); | ||
- | |||
- | -- | ||
- | -- Index för tabell `users` | ||
- | -- | ||
- | ALTER TABLE `users` | ||
- | ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `login` (`login`), ADD UNIQUE KEY `token` (`token`), ADD KEY `token_datetime` (`token_datetime`); | ||
- | |||
- | -- | ||
- | -- AUTO_INCREMENT för dumpade tabeller | ||
- | -- | ||
- | |||
- | -- | ||
- | -- AUTO_INCREMENT för tabell `categories` | ||
- | -- | ||
- | ALTER TABLE `categories` | ||
- | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, | ||
- | -- | ||
- | -- AUTO_INCREMENT för tabell `questions` | ||
- | -- | ||
- | ALTER TABLE `questions` | ||
- | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, | ||
- | -- | ||
- | -- AUTO_INCREMENT för tabell `users` | ||
- | -- | ||
- | ALTER TABLE `users` | ||
- | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, | ||
- | </ | ||
- | - Skapa en endpoint för att skapa en användare< | ||
- | $_POST ska innehålla följande data | ||
- | Array | ||
- | ( | ||
- | [login] => login | ||
- | [password] => password | ||
- | ) | ||
- | Som svar får man, om allt gick bra | ||
- | {" | ||
- | annars | ||
- | {" | ||
- | |||
- | https:// | ||
- | </ | ||
- | - Skapa en endpoint för att få en giltig token.< | ||
- | Array | ||
- | ( | ||
- | [login] => login | ||
- | [password] => password | ||
- | ) | ||
- | Som svar får man, om allt gick bra | ||
- | {" | ||
- | annars | ||
- | {" | ||
- | |||
- | https:// | ||
- | login: TestUser | ||
- | password: API-test! | ||
- | </ | ||
- | - Skapa en endpoint för att ta emot ett POST-anrop som hämtar alla kategorier som finns.< | ||
- | $_POST ska innehålla följande data | ||
- | Array | ||
- | ( | ||
- | [auth_token] => 40bd001563085fc35165329ea1ff5c5ecbdbbeef | ||
- | ) | ||
- | Som svar får man, om allt gick bra | ||
- | {" | ||
- | |||
- | https:// | ||
- | </ | ||
- | - Skapa en endpoint för att ta emot ett POST-anrop med data för en fråga med svarsalternativ. Det krävs en giltig token för att spara data. < | ||
- | Array | ||
- | ( | ||
- | [auth_token] => 40bd001563085fc35165329ea1ff5c5ecbdbbeef | ||
- | [category_id] => 3 | ||
- | [question] => Vilken sjö har störst yta? | ||
- | [option1] => Torneträsk | ||
- | [option2] => Kallsjön | ||
- | [option3] => Siljan | ||
- | [option4] => Hornavan | ||
- | ) | ||
- | Som svar får man, om allt gick bra | ||
- | {" | ||
- | annars | ||
- | {" | ||
- | |||
- | https:// | ||
- | </ | ||
- | |||
- | |||