SENG365 2024 Web Computing Architectures:
Assignment 1 Implement API with Web Service
Objectives
The objective of this assignment is to implement a RESTful API for a petition website. You will be provided with the API specification that you must implement, together with a database specification. You will also be allocated a project repo on the SENG365 eng-git server that you will use to maintain your application and submit your code.
Assignments 1 and 2 combine to give you the full experience of building a complete web application following an API-first approach. The lectures and labs in term 1 will give you the tools you’ll need to implement a web service to deliver the event API in Assignment 1. In term 2, you’ll design and develop a web client for Assignment 2 that uses the API to allow users to actually to create and signup for events.
We’ll discuss the domain and the API design for both assignments in the first few weeks of the semester.
Additional information on the application
Information is provided on Learn relating to:
. The API specification for Assignment 1, and
. (In due course) A set of user stories for Assignment 2.
On eng-git, you will be provided with:
. A student-specific repository, containing a basic application and API specification,
. A set of Postman tests to test your server-side application in a local environment.
Required technologies
For this assignment, you must use Node.js with Express, and use the version levels that are used in the labs. You must also use the SENG365-specific MySQL database server (you will be provided with an account and database). You may choose to use additional node packages, depending on your implementation, provided these packages are sourced from a recognized public node package repository (so that we can also install them), and these packages do not break dependencies on the Node.js and Express versions in the labs.
You do not have to develop your applications only in the labs, you may use your own computing resources. You must maintain your source code under eng-git1 Git version control and submit the final version to eng-git.
Your application must deploy and run successfully in the lab environment.
Indicative criteria used in the assessment
This assignment is all about correctness and meeting expectations for the API. Your creativity should be directed towards a clean and accurate implementation.
Among other things, we’ll be looking for:
1. The proportion of the API that you’ve implemented correctly; and
2. Appropriate handing of error conditions; and
3. Effectiveness of your implementation of the authentication and authorization requirements (as defined in the API specification).
Regardless of technology though there are some things your API implementation must do (“ It’s not just about the features.” ™):
1. It must run in the lab environment.
2. It must NOT modify the provided implementation of the \backdoor endpoints.
3. It must successfully authenticate users.
4. It must be persistent. We’ll run it, stop it, and expect any changes to still be there.
5. Any third-party client (maybe even another student’s app) may connect to your API and they will expect it to work precisely as documented in the API specification. For each element of the API that you implement, we’ll expect it to work just as defined.
Submission
Your code for this assignment must be committed to your allocated SENG365 project repo at eng-git.canterbury.ac.nz. We’ll assess the last commit made before the cut-off time for the assignment.