-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
55 lines (47 loc) · 1.61 KB
/
server.js
File metadata and controls
55 lines (47 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const Hapi = require('@hapi/hapi');
const got = require('got');
const {
ORDER_SERVICE_PORT = 4000,
USER_SERVICE_PORT = 5000,
} = process.env;
const orderService = `http://localhost:${ORDER_SERVICE_PORT}`;
const userService = `http://localhost:${USER_SERVICE_PORT}`;
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost',
});
server.route([
{
method: 'GET',
path: '/{id}',
handler: async (request, h) => {
const { id } = request.params;
try {
const [order, user] = await Promise.all([
got(`${orderService}/${id}`).json(),
got(`${userService}/${id}`).json(),
]);
return {
id: order.id,
menu: order.menu,
user: user.name,
};
} catch (error) {
if (!error.response) throw error;
if (error.response.statusCode === 400) {
return h.response({ message: 'bad request' }).code(400);
}
if (error.response.statusCode === 404) {
return h.response({ message: 'not found' }).code(404);
}
console.error('ERROR', error.response?.body || error.message);
throw error;
}
},
},
]);
await server.start();
console.log(`Server berjalan pada ${server.info.uri}`);
};
init();