The web application will provide users with access to information about different movies, directors, and genres. Users will be able to sign up, update their personal information, and create a list of their favorite movies.

Business Logic URL HTTP Method Request body data format Response body data format
Display Welcome Page to the user / GET None A text message welcoming the user
Get the list of all movies /movies GET None JSON object containing data about all movies (ID, Title, Genre, Director, Description, Featured, imgUrl)
Get the data about a movie by title /movie/:title GET None A JSON object containing data about a single movie by name (ID, Title, Genre, Director, Description, Featured, imgUrl) For example:
                      
                    {
                    "Title": "Fight Club",
                    "Description": "Lorem ipsum...",
                    "Genre": {
                    "Name": "Drama",
                    "Description": "Lorem ipsum..."
                    },
                    "Director": {
                    "Name": "David Fincher",
                    "Bio": "Lorem ipsum...",
                    "Birth": 1969
                    {,
                    "ImageURL": "https://via.placeholder.com/",
                    "Featured": false
                    }
                
                
Get the list of all genres /genres GET None A JSON object containing data about all genres (ID, Name, Description)
Get the data about a genre by name /genres/:name GET None A JSON object containing data about genre by name (ID, Name, Description) For example:
                                             
                                             "Genre": {
                                             "Name": "Thriller",
                                             "Description": "Lorem ipsum..."
                                            }
                                            
                                            
Get the list of all directors /directors GET None A JSON object containing data about all directors (ID, Name, Bio, Birth)
Get the data about one director by name /directors/:name GET None A JSON object containing data about a director by name (ID, Name, Bio, Birth) For example:
                                
                                "Director": {
                                "Name": "John Doe",
                                "Bio": "Lorem ipsum...",
                                "Birth": 1969
                                {
                                
                                
Get the list of all users /users GET None A JSON object containing data about all users (ID, FavoriteMovies, Username, Password, Email, Birthday)
Get the data about a user by username /users/:username GET None A JSON object containing data about a single user by username (ID, FavoriteMovies, Username, Password, Email, Birthday)
Add a new user /users POST A JSON object containing data about a new user to add (Username, Password, Email, Birthday), structured like:
                    
                    {
                    "Username": Jane Doe,
                    "Password": Janedoe,
                    "Email": janedoe@gmail.com
                    }
                
                
A JSON object containing data about the new user that was added (ID, FavoriteMovies, Username, Password, Email, Birthday):
                    
                    {
                    "ID": 1,
                    "Username": Jane Doe,
                    "Password": Janedoe,
                    "Email": janedoe@gmail.com,
                    "FavoriteMovies":[]
                    }
                    
                    
Update user info /users/:username PUT A JSON object containing the updated data of the user (Username, Password, Email, Birthday) A JSON object containing the updated data of the user (FavoriteMovies, Username, Password, Email, Birthday)
Delete an existing user /users/:username DELETE None A text message indicating that the user has been deleted
Add favorite movies to the list of favorites /users/:username/movies/:movieID POST A JSON object holding data about the movie to add to the list of favorites A JSON object containing the updated data of the users favorite movie and a text message indicating that a movie has been added.
Delete favorite movies from the list of favorites /users/:username/movies/:movieID DELETE None A text message indicating that a favorite movie has been deleted from the list of favorites