File tree Expand file tree Collapse file tree 3 files changed +35
-1
lines changed Expand file tree Collapse file tree 3 files changed +35
-1
lines changed Original file line number Diff line number Diff line change @@ -1597,13 +1597,17 @@ added: v0.4.0
15971597
15981598* ` name ` {string}
15991599* ` value ` {any}
1600+ * Returns: {http.ServerResponse}
1601+
1602+ Returns the response object.
16001603
16011604Sets a single header value for implicit headers. If this header already exists
16021605in the to-be-sent headers, its value will be replaced. Use an array of strings
16031606here to send multiple headers with the same name. Non-string values will be
16041607stored without modification. Therefore, [ ` response.getHeader() ` ] [ ] may return
16051608non-string values. However, the non-string values will be converted to strings
1606- for network transmission.
1609+ for network transmission. The same response object is returned to the caller,
1610+ to enable call chaining.
16071611
16081612``` js
16091613response .setHeader (' Content-Type' , ' text/html' );
Original file line number Diff line number Diff line change @@ -570,6 +570,7 @@ OutgoingMessage.prototype.setHeader = function setHeader(name, value) {
570570 this [ kOutHeaders ] = headers = ObjectCreate ( null ) ;
571571
572572 headers [ name . toLowerCase ( ) ] = [ name , value ] ;
573+ return this ;
573574} ;
574575
575576
Original file line number Diff line number Diff line change 1+ 'use strict' ;
2+ const common = require ( '../common' ) ;
3+ const http = require ( 'http' ) ;
4+ const assert = require ( 'assert' ) ;
5+ const expected = {
6+ '__proto__' : null ,
7+ 'testheader1' : 'foo' ,
8+ 'testheader2' : 'bar' ,
9+ 'testheader3' : 'xyz'
10+ } ;
11+ const server = http . createServer ( common . mustCall ( ( req , res ) => {
12+ let retval = res . setHeader ( 'testheader1' , 'foo' ) ;
13+
14+ // Test that the setHeader returns the same response object.
15+ assert . strictEqual ( retval , res ) ;
16+
17+ retval = res . setHeader ( 'testheader2' , 'bar' ) . setHeader ( 'testheader3' , 'xyz' ) ;
18+ // Test that chaining works for setHeader.
19+ assert . deepStrictEqual ( res . getHeaders ( ) , expected ) ;
20+ res . end ( 'ok' ) ;
21+ } ) ) ;
22+ server . listen ( 0 , ( ) => {
23+ http . get ( { port : server . address ( ) . port } , common . mustCall ( ( res ) => {
24+ res . on ( 'data' , ( ) => { } ) ;
25+ res . on ( 'end' , common . mustCall ( ( ) => {
26+ server . close ( ) ;
27+ } ) ) ;
28+ } ) ) ;
29+ } ) ;
You can’t perform that action at this time.
0 commit comments