freeCodeCamp/curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/start-a-working-express-ser...

49 lines
2.2 KiB
Markdown
Raw Normal View History

2018-10-25 18:29:56 +00:00
---
id: 587d7fb0367417b2b2512bee
title: Start a Working Express Server
challengeType: 2
---
## Description
<section id='description'>
fix/reformat-basic-node-express-challenges (#35424) * fix/reformat-basic-node-express-challenges * add semi-colon Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-json-on-a-specific-route.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-json-on-a-specific-route.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/get-query-parameter-input-from-the-client.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/get-route-parameter-input-from-the-client.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-request-logger-middleware.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-request-logger-middleware.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-request-logger-middleware.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-an-html-file.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-static-assets.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-static-assets.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/start-a-working-express-server.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/start-a-working-express-server.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com>
2019-03-06 23:20:17 +00:00
In the first two lines of the file <code>myApp.js</code>, you can see how easy it is to create an Express app object. This object has several methods, and you will learn many of them in these challenges. One fundamental method is <code>app.listen(port)</code>. It tells your server to listen on a given port, putting it in running state. You can see it at the bottom of the file. It is inside comments because, for testing reasons, we need the app to be running in the background. All the code that you may want to add goes between these two fundamental parts. Glitch stores the port number in the environment variable <code>process.env.PORT</code>. Its value is <code>3000</code>.
2018-10-25 18:29:56 +00:00
Lets serve our first string! In Express, routes takes the following structure: <code>app.METHOD(PATH, HANDLER)</code>. METHOD is an http method in lowercase. PATH is a relative path on the server (it can be a string, or even a regular expression). HANDLER is a function that Express calls when the route is matched.
Handlers take the form <code>function(req, res) {...}</code>, where req is the request object, and res is the response object. For example, the handler
fix/reformat-basic-node-express-challenges (#35424) * fix/reformat-basic-node-express-challenges * add semi-colon Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-json-on-a-specific-route.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-json-on-a-specific-route.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/get-query-parameter-input-from-the-client.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/get-route-parameter-input-from-the-client.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-request-logger-middleware.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-request-logger-middleware.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-request-logger-middleware.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-an-html-file.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-static-assets.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-static-assets.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/start-a-working-express-server.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/start-a-working-express-server.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com>
2019-03-06 23:20:17 +00:00
<blockquote>
function(req, res) {<br>
&nbsp;&nbsp;res.send('Response String');<br>
}</blockquote>
2018-10-25 18:29:56 +00:00
will serve the string 'Response String'.
</section>
## Instructions
<section id='instructions'>
fix/reformat-basic-node-express-challenges (#35424) * fix/reformat-basic-node-express-challenges * add semi-colon Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-json-on-a-specific-route.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-json-on-a-specific-route.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/get-query-parameter-input-from-the-client.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/get-route-parameter-input-from-the-client.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-request-logger-middleware.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-request-logger-middleware.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-request-logger-middleware.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-an-html-file.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-static-assets.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/serve-static-assets.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/start-a-working-express-server.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/start-a-working-express-server.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com> * Update curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.english.md Co-Authored-By: moT01 <20648924+moT01@users.noreply.github.com>
2019-03-06 23:20:17 +00:00
Use the <code>app.get()</code> method to serve the string "Hello Express" to GET requests matching the <code>/</code> (root) path.
<strong>Note:</strong> Be sure that your code works by looking at the logs, then see the results in your browser by clicking the Show Live button if you are using Glitch.
2018-10-25 18:29:56 +00:00
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: Your app should serve the string 'Hello Express'
testString: 'getUserInput => $.get(getUserInput(''url'')).then(data => { assert.equal(data, ''Hello Express'', ''Your app does not serve the text "Hello Express"''); }, xhr => { throw new Error(xhr.responseText); })'
2018-10-25 18:29:56 +00:00
```
</section>
## Challenge Seed
<section id='challengeSeed'>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>