Step 4: Routing
Routing refers to responding to client requests received over various endpoints (URLs).
In an Express app, routing generally looks like this:
app.METHOD(PATH, HANDLER)
Where:
appis an instance ofexpress.METHODis an HTTP request method, in lowercase. For example,app.get()to handle GET requests andapp.postto handle POST requests. Express supports methods that correspond to all HTTP verbs.PATHis a "path" on the server. It typically appears after the domain name in a URL. For example, inhttps://sis.jhu.edu/api/classes/codes/schoolsthe path is/api/classes/codes/schools.HANDLERis the function executed when the route is "matched".
Let's focus on an example of routing:
app.get("/api/schools", (req, res) => {
res.json(schools);
});
The Express app is listening on http://localhost:5000/. When a client goes to the URL http://localhost:5000/api/schools, the path /api/schools is matched with the above route and the following "handler" function is executed:
(req, res) => {
res.json(schools);
}
-
The
reqis an object that represents the HTTP request. The Express app will build this object (based on the incoming requests) with properties for the request query string, parameters, body, HTTP headers, and so on. -
The
resis an object that represents the HTTP response. The Express app provides many properties so you can appropriately respond to an HTTP request. For example,res.json(schools)sends back theschoolsas a JSON object.
Note that we have not yet made any use of the req object. However, in earlier lectures, when we interacted with the SIS API, we've seen how for instance the API Key was passed as a query parameter along with the API endpoint. Similarly, if a client were to make the following Get request to our Express app:
http://localhost:5000/api/schools?key=pJnMRxKD1fFECXFRX1FDXykpLww0Lazk
We could get the (API) key and print it to the terminal as follows:
app.get("/api/schools", (req, res) => {
console.log(req.query.key);
res.json(schools);
});