source

Express/Node를 사용하여 404 응답을 프로그래밍 방식으로 전송하는 방법

factcode 2022. 9. 27. 23:47
반응형

Express/Node를 사용하여 404 응답을 프로그래밍 방식으로 전송하는 방법

Express/Node 서버에서 404 오류를 시뮬레이션합니다.내가 어떻게 그럴 수 있을까?

Express 4.0 이후 전용 기능이 있습니다.

res.sendStatus(404);

이전 버전의 Express를 사용하는 경우 대신 이 기능을 사용하십시오.

res.status(404).send('Not found');

Express 4.x에 대한 답변 갱신

사용하는 대신res.send(404)이전 버전의 Express와 마찬가지로 새로운 방식은 다음과 같습니다.

res.sendStatus(404);

Express는 매우 기본적인 404 응답을 "Not Found" 텍스트와 함께 보냅니다.

HTTP/1.1 404 Not Found
X-Powered-By: Express
Vary: Origin
Content-Type: text/plain; charset=utf-8
Content-Length: 9
ETag: W/"9-nR6tc+Z4+i9RpwqTOwvwFw"
Date: Fri, 23 Oct 2015 20:08:19 GMT
Connection: keep-alive

Not Found

시뮬레이션 할 필요 없어요.에 대한 두 번째 주장res.send상태 코드인 것 같아요.그 논쟁에 404번만 넘기세요.

명확하게 설명하겠습니다.expressjs.org의 매뉴얼에 따르면 어떤 번호라도 다음 번호로 넘어간 것 같습니다.res.send()상태 코드로 해석됩니다.따라서 기술적으로 다음과 같은 이점을 얻을 수 있습니다.

res.send(404);

편집: 제 잘못입니다.res대신req응답으로 호출해야 합니다.

편집: Express 4 현재send(status)메서드는 더 이상 사용되지 않습니다.Express 4 이후를 사용하는 경우 다음을 사용합니다.res.sendStatus(404)대신.(댓글 힌트 @badcc 감사합니다)

아래에 게재할 사이트에 따르면, 모두 서버 셋업 방법이라고 합니다.예를 들어 다음과 같습니다.

var http = require("http");
var url = require("url");

function start(route, handle) {
  function onRequest(request, response) {
    var pathname = url.parse(request.url).pathname;
    console.log("Request for " + pathname + " received.");

    route(handle, pathname, response);
  }

  http.createServer(onRequest).listen(8888);
  console.log("Server has started.");
}

exports.start = start;

루트 기능:

function route(handle, pathname, response) {
  console.log("About to route a request for " + pathname);
  if (typeof handle[pathname] === 'function') {
    handle[pathname](response);
  } else {
    console.log("No request handler found for " + pathname);
    response.writeHead(404, {"Content-Type": "text/plain"});
    response.write("404 Not found");
    response.end();
  }
}

exports.route = route;

이게 한 가지 방법이에요.http://www.nodebeginner.org/

다른 사이트에서 페이지를 작성한 후 로드합니다.이건 당신이 찾고 있는 것 이상일 수도 있어요.

fs.readFile('www/404.html', function(error2, data) {
            response.writeHead(404, {'content-type': 'text/html'});
            response.end(data);
        });

http://blog.poweredbyalt.net/?p=81

Express 사이트에서 NotFound 예외를 정의하고 404 페이지 또는 다음 경우 /404로 리다이렉트할 때마다 이 예외를 슬로우합니다.

function NotFound(msg){
  this.name = 'NotFound';
  Error.call(this, msg);
  Error.captureStackTrace(this, arguments.callee);
}

NotFound.prototype.__proto__ = Error.prototype;

app.get('/404', function(req, res){
  throw new NotFound;
});

app.get('/500', function(req, res){
  throw new Error('keyboard cat!');
});

IMO를 사용하는 것이 가장 좋은 방법은next()기능:

router.get('/', function(req, res, next) {
    var err = new Error('Not found');
    err.status = 404;
    return next(err);
}

그런 다음 오류 핸들러가 오류를 처리하며 HTML을 사용하여 오류를 스타일링할 수 있습니다.

언급URL : https://stackoverflow.com/questions/8393275/how-to-programmatically-send-a-404-response-with-express-node

반응형