Differences

This shows you the differences between two versions of the page.

Link to this comparison view

park_quiz [2018-02-01 22:05]
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, det första korrekt. Kategori väljs i drop-down-meny där kategorierna fås från servern. 
-  - 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://www.codejava.net/java-se/networking/an-http-utility-class-to-send-getpost-request|här]] (som ni också fått ut i exemplet). \\ 
-För att tolka datan vi får från servern (Json) använder vi oss av Gson som kan laddas hem [[http://www.java2s.com/Code/Jar/g/Downloadgson224jar.htm|här]]. \\ 
-För att få iordning klasser för tolkning av Gson kan [[http://www.jsonschema2pojo.org|detta]] vara till hjälp. 
- 
- 
-===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 {{ ::quiz-api.zip |kod}}. 
- 
-  - Designa en databas för att hantera användare, kategorier och frågor.Nedan en dump av databasen.<code mysql> 
--- phpMyAdmin SQL Dump 
--- version 4.2.7.1 
--- http://www.phpmyadmin.net 
--- 
--- Värd: localhost 
--- Tid vid skapande: 01 feb 2018 kl 21:59 
--- Serverversion: 5.5.59-0ubuntu0.14.04.1 
--- PHP-version: 5.6.23-1+deprecated+dontuse+deb.sury.org~trusty+1 
- 
-SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 
-SET time_zone = "+00:00"; 
- 
--- 
--- 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  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_swedish_ci; 
- 
--- -------------------------------------------------------- 
- 
--- 
--- 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  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_swedish_ci; 
- 
--- -------------------------------------------------------- 
- 
--- 
--- 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  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_swedish_ci; 
- 
--- 
--- 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=5; 
--- 
--- AUTO_INCREMENT för tabell `questions` 
--- 
-ALTER TABLE `questions` 
-MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=225; 
--- 
--- AUTO_INCREMENT för tabell `users` 
--- 
-ALTER TABLE `users` 
-MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=26; 
-</code> 
-  - Skapa en endpoint för att skapa en användare<code> 
-$_POST ska innehålla följande data 
-Array 
-( 
-    [login] => login 
-    [password] => password 
-) 
-Som svar får man, om allt gick bra 
-{"status_code":201} 
-annars 
-{"status_code":400} 
- 
-https://student.oedu.se/~jf/quiz-api/index.php?e=register 
-</code> 
-  - Skapa en endpoint för att få en giltig token.<code>$_POST ska innehålla följande data 
-Array 
-( 
-    [login] => login 
-    [password] => password 
-) 
-Som svar får man, om allt gick bra 
-{"status_code":200,"auth_token":"40bd001563085fc35165329ea1ff5c5ecbdbbeef"} 
-annars 
-{"status_code":401} 
- 
-https://student.oedu.se/~jf/quiz-api/index.php?e=get-token 
-login: TestUser 
-password: API-test! 
-</code> 
-  - Skapa en endpoint för att ta emot ett POST-anrop som hämtar alla kategorier som finns.<code> 
-$_POST ska innehålla följande data 
-Array 
-( 
-    [auth_token] => 40bd001563085fc35165329ea1ff5c5ecbdbbeef 
-) 
-Som svar får man, om allt gick bra 
-{"status_code":200,"categories":[{"category_id":"1","category":"Fordon & teknik"},{"category_id":"2","category":"Tro & skrock"},{"category_id":"3","category":"Jorden runt"},{"category_id":"4","category":"Kropp & knopp"}]} 
- 
-https://student.oedu.se/~jf/quiz-api/index.php?e=get-categories 
-</code> 
-  - 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. <code>$_POST ska innehålla följande data, där det första alternativet är det korrekta svaret. 
-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 
-{"status_code":201} 
-annars 
-{"status_code":400} 
- 
-https://student.oedu.se/~jf/quiz-api/index.php?e=post-question 
-</code> 
- 
-