Add more robust error handling to server

Changes:
- Use the proper RESTful HTTP status codes for all endpoints (e.g. 204 rather than 200 when the response body is empty)
- Add consistent and more helpful error messages
- Handle invalid route parameters by checking if jamid returns empty objects (e.g. invalid contact IDs)
- Use res.send() rather than res.json() for consistency
- Handle three new signals

GitLab: #111
Change-Id: I1d48dc4629995ab9a96bb2086a9aa91f81889598
diff --git a/server/src/routers/contacts-router.ts b/server/src/routers/contacts-router.ts
index 8d51d2b..d757d52 100644
--- a/server/src/routers/contacts-router.ts
+++ b/server/src/routers/contacts-router.ts
@@ -35,6 +35,12 @@
 
 contactsRouter.get('/:contactId', (req, res) => {
   const contactDetails = jamid.getContactDetails(res.locals.accountId, req.params.contactId);
+
+  if (Object.keys(contactDetails).length === 0) {
+    res.status(HttpStatusCode.NotFound).send('No such contact found');
+    return;
+  }
+
   res.send(contactDetails);
 });
 
@@ -45,6 +51,11 @@
   jamid.addContact(accountId, contactId);
 
   const contactDetails = jamid.getContactDetails(accountId, contactId);
+  if (Object.keys(contactDetails).length === 0) {
+    res.status(HttpStatusCode.NotFound).send('No such contact found');
+    return;
+  }
+
   res.send(contactDetails);
 });