Professional Documents
Culture Documents
API Specification Template
API Specification Template
Please see the template tables (for each verb) that you can use to create the API
specification that fits the given API (posted on Blackboard). To see an example for each Verb,
see the result for the Server-side homework week 1.
Instead of this document and templates, you can use other tools to create the API
specification as well. An example of such a tool is the Swagger Editor
(https://editor.swagger.io/).
Table of Contents
1. Class diagram.............................................................................................................3
2. GET requests..............................................................................................................4
3. POST requests............................................................................................................5
4. PUT requests..............................................................................................................6
5. DELETE requests.........................................................................................................7
Inleiding:
Ik he been website gemaakt waarbij een gebruiker een mechanisch toetsenbord samen kan
stellen. Wanneer dit is samengesteld, kan er gezien worden hoeveel het toetsenbord gaat
kosten. Het is mogelijk om een nieuw toetsenbord toe te voegen door te een keuze te
maken van een aantal onderdelen. Deze kan aangepast en verwijderd worden. Er kan
gekozen worden tussen meerdere gebruikers.
2
1. Class diagram
Put your class diagram here. Also write some text that describes what is going on in your
class diagram. For example, point out what the different unique identifiers are for each class
and how the classes are related to each other.
Hieronder is het klassendiagram te zien. Het diagram bevat een user. Een user kan
keyboards toevoegen aan de lijst. Er is daarom een 1 op veel relaties tussen de user en de
keyboard klasse. Een keyboard bestaat uit meerdere onderdelen. Deze onderdelen zijn weer
onderverdeeld in verschillende klassen. De plate, keyboardCase, switches, PCB en keycaps.
Deze klassen hebben allemaal een 1 op veel relatie met de keyboard class.
3
2. GET requests
Add your requests here. Copy-paste the template for each different request.
GET /keyboards/{id}
Gets an keyboardCase based on the id.
4
GET /keyboards/getlist/{id}
Gets all the keyboards with the given user_id
GET /keyboards/getExistingKeyboard/{id}
Gets an keyboard based on the keyboard_id
GET /keyboards/keycaps
Gets a list of all the keycaps
5
GET /keyboards/PCB
Gets a list of all the PCB’s
GET /keyboards/plate
Gets a list of all the plates
Parameters: Name Type Description
Add a * to the (path / query)
name of (path / query)
required (path / query)
parameters.
(path / query)
(path / query)
Responses: Code Description / example if successful
6
GET /keyboards/switches
Gets a list of all the switches
GET /keyboards/users
Gets a list of all the users
7
3. POST requests
Add your requests here. Copy-paste the template for each different request.
8
4. PUT requests
Add your requests here. Copy-paste the template for each different request.
5. DELETE requests
Add your requests here. Copy-paste the template for each different request.
9
Sequence diagrams
Hier zijn de sequence diagrammen te zien. Het eerste diagram laat zien hoe er een post
wordt gemaakt naar de database. Op de website kunnen er een aantal onderdelen gekozen
worden. Deze worden via een form naar de Fetch API gestuurd. De API gaat deze data met
JSON naar de database versturen. Hier wordt het opgeslagen. Vervolgens wordt het
opgeslagen toetsenbord weer teruggestuurd en getoond op de webpagina.
Het tweede diagram laat een get request zien. De gebruiker kiest een van de users uit de
drop down menu. Er wordt vervolgens door de Fetch API een get request gemaakt met het
10
id dat aan deze user vast zit. Daarna worden de toetsenborden dat gekoppeld is aan de user
id terug gestuurd en getoond op de webpagina in de lijst.
11
Justification and other choices
Ik heb geen javaScript frameworks gemaakt of andere plugins waar ik toestemming voor
moest vragen.
Ik heb alleen wel een paar dingen gedaan die niet helemaal kloppen. Ik heb de dummy data
dat ingeladen moet worden op een andere manier toegevoegd. Ik heb in elke service een
methode aangemaakt waarmee ik data kan toevoegen aan de database.
Ik heb vervolgens een class genaamd AllProducts aangemaakt met methodes waarmee ik de
data inlaad. Deze mehodes stop ik vervolgens in de methode addProducts. Deze roep ik
weer aan in de main van de application class. Ik kwam er iets te laat achter dat er ook een
andere manier was via spring. Ik had geen tijd om dat aan te passen. Ook heb ik door tijd
tekort geen een op veel relaties gemaakt in de keyboard class waardoor child objects niet
verwijderd worden in de database.
12