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
'source' 카테고리의 다른 글
Java 인터페이스와 Objective-C 프로토콜의 차이점 (0) | 2022.09.27 |
---|---|
Junit - 1회 실행 셋업 방법 (0) | 2022.09.27 |
동일한 MySQL 테이블의 레코드 복제/복사 (0) | 2022.09.27 |
Terraform을 사용하여 MariaDB 데이터베이스 덤프/복원 (0) | 2022.09.27 |
MySQL 명령줄을 사용하여 사용자 계정 목록을 가져오려면 어떻게 해야 합니까? (0) | 2022.09.27 |