>  기사  >  웹 프론트엔드  >  Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.

Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.

青灯夜游
青灯夜游앞으로
2022-03-23 20:04:102463검색

Nodejs에서 setHeader와 writeHead의 차이점은 무엇인가요? 다음 기사에서는 setHeader와 writeHead를 비교하고 차이점에 대해 설명하겠습니다. 모든 사람에게 도움이 되기를 바랍니다.

Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.

오늘 NodeNode的时候发现Node/http中的setHeaderwriteHead很相似,都可以设置响应头部,我们来详细的说说吧!

setHeader

参数

response.setHeader(name, value)复制代码
  • name  属性
  • value  属性值
  • 返回 http.ServerResponse 返回响应对象

作用

为响应头部设置单个属性。

注意

  • 只能一个一个设置属性
  • 重复设置一个属性会替换之前的设置
  • 设置包含无效字符的属性字段名称或值将导致抛出 TypeError

示例

reponse.setHeader('Content-Type', 'text/html')
reponse.setHeader('Set-Cookie', ['type=ninja', 'language=javascript'])

重复设置一个属性

// 返回 content-type = text/html1
reponse.setHeader('Content-Type', 'text/html')
reponse.setHeader('Content-Type', 'text/html1')

Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.

writeHead

参数

response.writeHead(statusCode, [statusMessage], [headers])
  • statusCode  http状态码

  • statusMessage  状态信息(可选)

  • headers | 属性对象或数组(可选)

  • 返回 http.ServerResponse 返回响应对象

Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.

作用

setHeader作用相同

注意

  • 可以设置多个属性,setHeader只能设置一个

  • 只能调用一次

  • 必须在response.end()之前调用

  • 设置包含无效字符的属性字段名称或值将导致抛出 TypeError

示例

因为writeHead返回的是一个ServerResponse对象,我们可以进行链式调用

const body = 'hello world';
response
  .writeHead(200, {
    'Content-Length': Buffer.byteLength(body),
    'Content-Type': 'text/plain'
  })
  .end(body);

这里的Content-Length是以字节为单位,而不是字符。Buffer.byteLength()就是来确定正文的长度。

Nodejs不会检查Content-Length和已经传输的正文长度是否一致

同时使用setHeader和writeHead

// 返回 content-type = text/plain
const server = http.createServer((req, res) => {
  res.setHeader('Content-Type', 'text/html');
  res.setHeader('X-Foo', 'bar');
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('ok');
});

writeHead 的优先级比 setHeader 高,并且writeHead只能调用一次,所以在调用时,先考虑好哪些头不常改变后,再调用writeHead

如果已经调用了setHeader设置标头,那么他会传给writeHead合并

如果调用了此方法,且还没调用 response.setHeader()),则会直接将提供的标头值写入网络通道且内部不缓存。在标头上 response.getHeader()) 不会产生预期的结果。 如果需要逐步填充标头并在未来进行潜在的检索和修改,则改用 response.setHeader()를 배우면서 Node/http

setHeader

writeHead가 매우 유사하고 둘 다 설정할 수 있다는 것을 알았습니다. 응답 헤더에 대해 자세히 이야기해 보겠습니다.

  • setHeader

  • Parameters

    rrreee
    • name Attribute
    • value 속성 값

    • Return http.ServerResponse 응답 객체 반환
    • Function

    은 응답 헤더 개별 속성을 설정합니다.

    🎜참고🎜🎜
      🎜속성은 하나씩만 설정할 수 있습니다.🎜🎜
        🎜속성을 반복적으로 설정하면 이전 설정이 대체됩니다.🎜🎜
          🎜잘못된 문자가 포함된 속성 필드 이름 또는 값을 설정하면 TypeError🎜🎜🎜🎜Example🎜🎜rrreeerrreee🎜🎜반복적으로 속성 설정🎜🎜rrreee🎜Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.🎜🎜🎜writeHead🎜🎜🎜🎜Parameters🎜🎜rrreee🎜🎜🎜상태 코드 http 상태 코드 🎜🎜🎜🎜statusMessage 상태 메시지(선택 사항) 🎜🎜🎜🎜headers | 속성 객체 또는 배열(선택 사항) 🎜🎜🎜🎜 http.ServerResponse를 반환합니다. 응답 객체를 반환합니다. 🎜🎜🎜🎜Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.🎜🎜🎜function🎜🎜🎜and setHeaderfunction 동일 🎜🎜🎜 🎜🎜🎜🎜🎜은 여러 속성을 설정할 수 있지만 setHeader는 하나만 설정할 수 있습니다. 🎜🎜🎜🎜는 한 번만 호출할 수 있습니다. 🎜🎜🎜🎜은 <code>response.end() 전에 호출해야 합니다. 🎜 🎜🎜🎜잘못된 문자가 포함된 속성 필드 이름이나 값을 설정하면 TypeError가 발생합니다🎜🎜🎜🎜🎜Example🎜🎜🎜writeHead가 ServerResponse 개체를 반환하므로 다음을 수행할 수 있습니다. 체인 호출하기🎜 rrreee🎜여기서 콘텐츠 길이는 문자가 아닌 바이트 단위입니다. Buffer.byteLength()는 텍스트의 길이를 결정하는 데 사용됩니다. 🎜🎜Nodejs는 Content-Length가 전송된 본문의 길이와 일치하는지 확인하지 않습니다. 🎜🎜🎜setHeader와 writeHead를 동시에 사용하세요🎜🎜rrreee🎜writeHeadsetHeader 및 writeHead는 한 번만 호출할 수 있으므로 호출 시 자주 변경되지 않는 헤더를 먼저 고려한 다음 writeHead🎜🎜If setHeader를 호출하세요. 헤더를 설정하기 위해 호출된 경우 병합을 위해 writeHead로 전달됩니다. 이 메서드가 호출되고 response.setHeader())가 호출되지 않은 경우 제공된 헤더 값은 네트워크 채널에 직접 기록되며 내부적으로 캐시되지 않습니다. 헤더의 response.getHeader())가 예상한 결과를 생성하지 않습니다. 헤더를 점진적으로 채워야 하고 나중에 잠재적으로 검색 및 수정되어야 하는 경우 response.setHeader()를 대신 사용하세요. 🎜🎜🎜요약🎜🎜🎜🎜🎜setHeader는 헤더를 하나씩만 설정할 수 있고, writeHead는 한 번에 여러 개를 설정할 수 있습니다.🎜🎜🎜🎜setHeader는 반복적으로 호출할 수 있고, writeHead는 한 번만 호출할 수 있습니다.🎜🎜🎜🎜setHeader와 writeHead는 동시에 setHeader는 writeHead로 병합되고 writeHead는 높은 우선순위를 갖습니다🎜🎜🎜🎜writeHead는 상태 코드 및 상태 정보를 설정할 수 있으며, setHeader는 설정할 수 없으며 헤더만 설정할 수 있습니다🎜🎜🎜🎜더 많은 노드 관련 지식을 확인하세요. 방문: 🎜nodejs 튜토리얼🎜! 🎜

    위 내용은 Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제