You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/blog/2025-03-31-v5-1-latest-release.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ We know that migrating between versions can be challenging, especially when it i
28
28
29
29
Thanks to the incredible efforts of [Sebastian](https://github.com/bjohansebas) and [Filip](https://github.com/kjugi), we have developed a new [codemod package](https://www.npmjs.com/package/@expressjs/codemod) specifically designed to facilitate the transition from Express v4 to v5, as well as future major versions. This package automates many of the necessary code changes, minimizing manual effort and making the upgrade as smooth and efficient as possible.
30
30
31
-
However, we understand that not all changes can be automated. Some breaking changes, such as the [new Path Route Matching syntax](/en/guide/migrating-5#path-syntax), require manual modifications by developers. You can read more about all of the breaking changes which came with v5 in our [original release announcement](/en/blog/2024-10-15-v5-release).
31
+
However, we understand that not all changes can be automated. Some breaking changes, such as the [new Path Route Matching syntax](/en/guide/migrating-5#path-route-matching-syntax), require manual modifications by developers. You can read more about all of the breaking changes which came with v5 in our [original release announcement](/en/blog/2024-10-15-v5-release).
32
32
33
33
For more details on the migration process and how to use the codemod package, check the [repository’s README](https://github.com/expressjs/codemod#readme) and the [migration guide](/en/guide/migrating-5).
34
34
@@ -115,9 +115,9 @@ starts the clock on EOL for v4 by moving it to `MAINTENANCE`. We recognize that
115
115
only major version for most of the history of Node.js itself. Because of this, we want to remain flexible and also
116
116
provide a bit longer support. We want to do what is best for the ecosystem, so consider these goals not commitments.
117
117
118
-
\*: v4 is a special case, and we may extend MAINTENENCE support
118
+
\*: v4 is a special case, and we may extend MAINTENENCE support
119
119
\*\*: v5 MAINTENENCE and EOL dates are determined by when v6 is released, these dates reflect the earliest dates if we
120
-
were to ship v6 on 2025-10-01
120
+
were to ship v6 on 2025-10-01
121
121
\*\*\* : v6 work has not officially started yet, this is simply the earliest date we can ship based on our proposed policy
Copy file name to clipboardExpand all lines: src/content/blog/2025-06-05-vulnerability-reporting-process-overhaul.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,7 +38,7 @@ Security Advisories are now enabled across all Express.js repositories, allowing
38
38
39
39
Expectations around ownership and response timelines have been clarified and published to reduce ambiguity and improve responsiveness.
40
40
41
-
> A [Security triage team member](https://github.com/expressjs/security-wg#security-triage-team) or [the repo captain](https://github.com/expressjs/discussions/blob/master/docs/contributing/captains_and_committers.md) will acknowledge your report as soon as possible.
41
+
> A [Security triage team member](https://github.com/expressjs/security-wg#security-triage-team-expressjssecurity-triage) or [the repo captain](https://github.com/expressjs/discussions/blob/master/docs/contributing/captains_and_committers.md) will acknowledge your report as soon as possible.
42
42
>
43
43
> After the initial reply to your report, the security team will
44
44
> endeavor to keep you informed of the progress towards a fix and full
Copy file name to clipboardExpand all lines: src/content/blog/2026-05-18-a-new-look-for-express.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -77,7 +77,7 @@ The effort was led by [Sebastian Beltran](https://github.com/bjohansebas), with
77
77
78
78
A huge thank you goes to the [Orama](https://orama.com) team for sponsoring [Francesca Giannino](https://github.com/g-francesca), [Angela Angelini](https://www.linkedin.com/in/angeliningl/), [Michele Riva](https://github.com/micheleriva), and [Davide Spaziani](https://www.linkedin.com/in/davidespazianitesta/), and for the design, feedback, and support they brought to every stage of the project.
79
79
80
-
From the Express side, the redesign was shaped by many hands: [Ulises Gascón](https://github.com/ulisesgascon), [Rand McKinney](https://github.com/crandmck), [Jon Church](https://github.com/jonchurch), [Shubham Oulkar](https://github.com/ShubhamOulkar), the rest of the [Express Technical Committee](https://github.com/expressjs/express#technical-committee), and everyone who contributed reviews, issues, or comments along the way. The full history, including every PR that made it into the redesign, lives in [the main pull request](https://github.com/expressjs/expressjs.com/pull/2169).
80
+
From the Express side, the redesign was shaped by many hands: [Ulises Gascón](https://github.com/ulisesgascon), [Rand McKinney](https://github.com/crandmck), [Jon Church](https://github.com/jonchurch), [Shubham Oulkar](https://github.com/ShubhamOulkar), the rest of the [Express Technical Committee](https://github.com/expressjs/express#tc-technical-committee), and everyone who contributed reviews, issues, or comments along the way. The full history, including every PR that made it into the redesign, lives in [the main pull request](https://github.com/expressjs/expressjs.com/pull/2169).
81
81
82
82
More than a year of work went into this launch. In open source, progress is rarely fast: decisions take discussion, design takes iteration, and reviews take time. But step by step, a community can build something it's proud of, and this is one of those steps.
_Routing_ refers to how an application's endpoints (URIs) respond to client requests.
9
-
For an introduction to routing, see [Basic routing](/en/4x/starter/basic-routing).
9
+
For an introduction to routing, see [Basic routing](../../starter/basic-routing).
10
10
11
11
You define routing using methods of the Express `app` object that correspond to HTTP methods;
12
12
for example, `app.get()` to handle GET requests and `app.post` to handle POST requests. For a full list,
13
-
see [app.METHOD](/en/4x/api/application#appmethodpath-callback--callback-). You can also use [app.all()](/en/4x/api/application#appallpath-callback--callback-) to handle all HTTP methods and [app.use()](/en/4x/api/application#appusepath-callback--callback) to
14
-
specify middleware as the callback function (See [Using middleware](/en/4x/guide/using-middleware) for details).
13
+
see [app.METHOD](../../api/application#appmethodpath-callback--callback-). You can also use [app.all()](../../api/application#appallpath-callback--callback-) to handle all HTTP methods and [app.use()](../../api/application#appusepath-callback--callback) to
14
+
specify middleware as the callback function (See [Using middleware](../using-middleware) for details).
15
15
16
16
These routing methods specify a callback function (sometimes called "handler functions") called when the application receives a request to the specified route (endpoint) and HTTP method. In other words, the application "listens" for requests that match the specified route(s) and method(s), and when it detects a match, it calls the specified callback function.
17
17
@@ -50,7 +50,7 @@ app.post('/', (req, res) => {
50
50
```
51
51
52
52
Express supports methods that correspond to all HTTP request methods: `get`, `post`, and so on.
53
-
For a full list, see [app.METHOD](/en/4x/api/application#appmethodpath-callback--callback-).
53
+
For a full list, see [app.METHOD](../../api/application#appmethodpath-callback--callback-).
54
54
55
55
There is a special routing method, `app.all()`, used to load middleware functions at a path for _all_ HTTP request methods. For example, the following handler is executed for requests to the route `"/secret"` whether using `GET`, `POST`, `PUT`, `DELETE`, or any other HTTP request method supported in the [http module](https://nodejs.org/api/http.html#http_http_methods).
56
56
@@ -212,12 +212,12 @@ characters with an additional backslash, for example `\\d+`.
212
212
</Alert>
213
213
214
214
<Alerttype="warning">
215
-
The <ahref="https://github.com/expressjs/express/issues/2495">`*` character in regular expressions is not interpreted in the usual way</a>. As a workaround, use `{0,}` instead of `*`.
215
+
The [`*`](https://github.com/expressjs/express/issues/2495) character in regular expressions is not interpreted in the usual way. As a workaround, use `{0,}` instead of `*`.
216
216
</Alert>
217
217
218
218
## Route handlers
219
219
220
-
You can provide multiple callback functions that behave like [middleware](/en/guide/using-middleware) to handle a request. The only exception is that these callbacks might invoke `next('route')` to bypass the remaining route callbacks. You can use this mechanism to impose pre-conditions on a route, then pass control to subsequent routes if there's no reason to proceed with the current route.
220
+
You can provide multiple callback functions that behave like [middleware](../using-middleware) to handle a request. The only exception is that these callbacks might invoke `next('route')` to bypass the remaining route callbacks. You can use this mechanism to impose pre-conditions on a route, then pass control to subsequent routes if there's no reason to proceed with the current route.
221
221
222
222
```js
223
223
app.get('/user/:id', (req, res, next) => {
@@ -312,22 +312,22 @@ app.get(
312
312
313
313
The methods on the response object (`res`) in the following table can send a response to the client, and terminate the request-response cycle. If none of these methods are called from a route handler, the client request will be left hanging.
|[res.download()](/en/4x/api/response#resdownloadpath--filename--options--fn)| Prompt a file to be downloaded. |
318
-
|[res.end()](/en/4x/api/response#resenddata-encoding-callback)| End the response process. |
319
-
|[res.json()](/en/4x/api/response#resjsonbody)| Send a JSON response. |
320
-
|[res.jsonp()](/en/4x/api/response#resjsonpbody)| Send a JSON response with JSONP support. |
321
-
|[res.redirect()](/en/4x/api/response#resredirectstatus-path)| Redirect a request. |
322
-
|[res.render()](/en/4x/api/response#resrenderview--locals--callback)| Render a view template. |
323
-
|[res.send()](/en/4x/api/response#ressendbody)| Send a response of various types. |
324
-
|[res.sendFile()](/en/4x/api/response#ressendfilepath--options--fn)| Send a file as an octet stream. |
325
-
|[res.sendStatus()](/en/4x/api/response#ressendstatusstatuscode)| Set the response status code and send its string representation as the response body. |
|[res.download()](../../api/response#resdownloadpath--filename--options--fn)| Prompt a file to be downloaded. |
318
+
|[res.end()](../../api/response#resenddata-encoding-callback)| End the response process. |
319
+
|[res.json()](../../api/response#resjsonbody)| Send a JSON response. |
320
+
|[res.jsonp()](../../api/response#resjsonpbody)| Send a JSON response with JSONP support. |
321
+
|[res.redirect()](../../api/response#resredirectstatus-path)| Redirect a request. |
322
+
|[res.render()](../../api/response#resrenderview--locals--callback)| Render a view template. |
323
+
|[res.send()](../../api/response#ressendbody)| Send a response of various types. |
324
+
|[res.sendFile()](../../api/response#ressendfilepath--options--fn)| Send a file as an octet stream. |
325
+
|[res.sendStatus()](../../api/response#ressendstatusstatuscode)| Set the response status code and send its string representation as the response body. |
326
326
327
327
## app.route()
328
328
329
329
You can create chainable route handlers for a route path by using `app.route()`.
330
-
Because the path is specified at a single location, creating modular routes is helpful, as is reducing redundancy and typos. For more information about routes, see: [Router() documentation](/en/4x/api/router).
330
+
Because the path is specified at a single location, creating modular routes is helpful, as is reducing redundancy and typos. For more information about routes, see: [Router() documentation](../../api/router).
331
331
332
332
Here is an example of chained route handlers that are defined by using `app.route()`.
333
333
@@ -388,7 +388,7 @@ app.use('/birds', birds);
388
388
389
389
The app will now be able to handle requests to `/birds` and `/birds/about`, as well as call the `timeLog` middleware function that is specific to the route.
390
390
391
-
But if the parent route `/birds` has path parameters, it will not be accessible by default from the sub-routes. To make it accessible, you will need to pass the `mergeParams` option to the Router constructor [reference](/en/4x/api/application#appusepath-callback--callback).
391
+
But if the parent route `/birds` has path parameters, it will not be accessible by default from the sub-routes. To make it accessible, you will need to pass the `mergeParams` option to the Router constructor [reference](../../api/application#appusepath-callback--callback).
0 commit comments