COMP312 Internet Programming II
Assignment 2
Student number: _______________________ Due date: Nov 22, 2019
Q1. (40 marks) Write a client-side JavaScript program to display a lecture time table in <table>. The time table data is provided in a script file ‘timetab.js’. The program allows the user to choose a year of study (1 to 4).
Requirements:
(5 marks) Include an HTML document with a <form> for selecting year of study
(5 marks) No JavaScript code embedded in the HTML document. Save your code in *.js files
(5 marks) Display the weekly lectures in a <table>, group by day-of-week. Arrange the lectures in time order.
(5 marks) Each row shows the course code, course title, day-of-week, start time, end time, and classroom in separate table cells <td>.
(5 marks) Display day-of-week in English, e.g. ‘Monday’, ‘Tuesday’.
(10 marks) When the user selects a year of study in the <form>, update the <table> to show the lectures for the selection.
(5 marks) By default, the page shows the weekly lectures of year 3.
Your answer should include the source code of your HTML file and your script file. Don’t include jQuery source file or ‘timetab.js’.
Q2. (30 marks) The following application server handles two endpoints: one for the image file /ipm.png and one for inquiring the lectures of a given course code.
var express = require('express');
var app = express();
// import and database connection for ‘db’ omitted
app.get('/ipm.png', (req, res) => {
res.sendFile(__dirname+'/public/ipm.png');
});
app.get('/lecture/:code', (req, res) => {
var code = req.params.code;
db.all("SELECT * from timetab where code=?",
[code], function(err, rows) {
if (err) throw err;
var ans = '';
for (row of rows) {
ans += `<p>${r.code}, ${r.start}-${r.end}, room ${r.room}</p>`
}
res.send(ans);
});
});
app.listen(3000);
Suppose that the server is running and waiting for incoming HTTP requests. The server first receives a request for the URL ‘/lecture/comp312’. While it is waiting for the database result, the server receives another request for the URL ‘/ipm.png’.
Explain how the event loop handles the two HTTP requests. The event loop wakes up (at least) three times to handle three events (two for incoming requests, one for database operation).
Requirements:
(10 marks) Describe how the application server searches the stack of routes in handling the two requests.
(5 marks) Point out the order that the three events occur.
(5 marks) Describe the statements that the server runs to handle the first event.
(5 marks) Describe the statements that the server runs to handle the second event.
(5 marks) Describe the statements that the server runs to handle the third event.
Q3. (30 marks) An online video site is going to design and implement an RPC-style Web API for its Ajax web app. The Web API has the following four endpoints: /getUser, /searchVideo, /like and /removeVideo. The browser-side client can manipulate data in a server-side database using the API. The database schema is provided below.
Table Video
Column NameData typeDescription
Vidintegerprimary key. auto increment.
Titletexta short description of the video
urltextURL of the video data file in mp4 format
uploadUserintegeruser who uploaded the video. FK to User
Categorytexte.g. ‘comedy’, ‘music’
Likesintegernumber of likes by users
Table User
Column NameData typeDescription
Uidintegerprimary key. auto increment.
Fullnametextfull name of the user
Emailtextemail address of the user
Table VoteUp
Column NameData typeDescription
UidintegerWho likes the video. FK to User.
VidintegerWhich video is liked. FK to Video.
Design the Web API. For each of four endpoints, write a sample HTTP request message and a sample response message (for successful operation) to illustrate your design. The following are detail requirement.
/getUser – Retrieve user information. The input parameter is uid. The response must include uid, full name and email of the user. In addition, it must include the number of videos uploaded by the user.
/searchVideo – Search for videos using keyword in video title and category. The input parameters are keyword and category. The sample response must contain information about more than 1 video. The response includes vid, title, URL and likes.
/like – A user ‘likes’ a video. The input parameters are uid and vid. Response body is empty.
/removeVideo – Remove a video. The input parameter is vid. Response body is empty.
Marking scheme:
/getUserrequest4%
(2%) HTTP message format. Suitable method and URL.
(2%) input parameter (1)
response4%(2%) HTTP message format
(2%) JSON response body, contain number of videos
/searchVideorequest4%
(2%) HTTP message format. Suitable method and URL.
(2%) input parameters (1 or 2)
response6%(2%) HTTP message format
(4%) JSON response body, contain more than 1 video
/likerequest4%
(2%) HTTP message format. Suitable method and URL.
(2%) input parameter (2)
response2%(2%) HTTP message format
/removeVideorequest4%(2%) HTTP message format. Suitable method and URL.
(2%) input parameter (1)
response2%(2%) HTTP message format
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。