# Testing a Node.js Server with HTTP Files in VSCode: A Complete Guide Gabriel Anderson October 18, 2024 Imagine this: you’re developing an API, tweaking your endpoints, and testing every change through Postman or curl. Now picture doing the same thing without leaving your code editor. This streamlined process is possible with Visual Studio Code (VSCode) and the REST Client extension. In this post, I’ll walk you through setting up a simple Node.js server with a few API endpoints and how to test them using `.http` files directly in VSCode. Let’s dive in. ## Setting Up the Node.js Server ### Step 1: Create a New Project First, you’ll need to set up a basic Node.js project. Open your terminal, navigate to your working directory, and run: ```bash mkdir node-api-server cd node-api-server npm init -y ``` This will generate a basic `package.json` file for your project. ### Step 2: Install Express We’ll be using Express to create the API server. Install Express with the following command: ```bash npm install express ``` ### Step 3: Write the Server Code Create a new file called `server.js` in the root of your project. This will hold the logic for your simple Node.js server: ```js const express = require('express'); const app = express(); const port = 3000; // Middleware to parse JSON bodies app.use(express.json()); // GET endpoint app.get('/api/users', (req, res) => { res.json([ { id: 1, name: 'John Doe' }, { id: 2, name: 'Jane Doe' } ]); }); // POST endpoint app.post('/api/users', (req, res) => { const newUser = req.body; newUser.id = Date.now(); res.status(201).json(newUser); }); // Start the server app.listen(port, () => { console.log(`Server running at http://localhost:${port}`); }); ``` ### Step 4: Start the Server Run your server using: ```bash node server.js ``` Your Node.js API server is now running on `http://localhost:3000`. ## Creating and Testing API Requests in VSCode Once the server is set up, we’ll use VSCode’s REST Client extension to test the API. The beauty of this method is that everything happens inside the editor, so there’s no need to context-switch between tools. ### Step 1: Install the REST Client Extension In VSCode, open the Extensions panel (`Ctrl+Shift+X` on Windows/Linux, `Cmd+Shift+X` on Mac) and search for "REST Client." Install it. ### Step 2: Create a `.http` File Create a new file named `requests.http` in the root of your project. This file will contain the HTTP requests for testing your API. ### Step 3: Writing Your HTTP Requests #### GET Request In `requests.http`, add the following request to test the `/api/users` endpoint: ```http GET http://localhost:3000/api/users ``` #### POST Request Add another request to test the `/api/users` POST endpoint: ```http POST http://localhost:3000/api/users Content-Type: application/json { "name": "Alice Smith" } ``` ### Step 4: Sending Requests With the REST Client installed, you’ll see a "Send Request" link appear above each request in your `.http` file. Click it to send the request. Alternatively, you can use the keyboard shortcut: - Windows/Linux: `Ctrl+Alt+R` - Mac: `Cmd+Alt+R` When you send the requests, the response will appear directly in VSCode. You’ll be able to view the status code, headers, and the response body. ### Step 5: Testing Variables and Environments You can also use variables to avoid hardcoding URLs across different requests. Here’s an example: ```http @baseUrl = http://localhost:3000 GET {{baseUrl}}/api/users ``` This allows you to change the `baseUrl` once and apply it across multiple requests. ## Summary By combining Node.js, Express, and the REST Client extension for VSCode, you can easily set up and test a simple API server without needing external tools like Postman. Here's a recap: 1. **Set up a Node.js server** using Express with basic `GET` and `POST` endpoints. 2. **Install the REST Client extension** in VSCode. 3. **Create a `.http` file** to define your HTTP requests and execute them directly from your editor. 4. **Use variables and environments** in `.http` files to make your requests flexible and reusable. This workflow significantly improves productivity, allowing you to code and test APIs without ever leaving your development environment. Happy coding!