express.js - 단일 행의 여러 경로에 대한 단일 라우팅 핸들러
이것을 단일 함수 호출로 만들 수 있는 방법이 있습니까?
var todo = function (req, res){};
app.get("/", todo);
app.get("/blabla", todo);
app.get("/blablablabla", todo);
다음과 같은 것:
app.get("/", "/blabla", "/blablablabla", todo );
구문이 엉망인 것은 알지만, 제가 이루고 싶은 것에 대한 아이디어를 제공하는 것만으로도 일련의 경로는 멋질 것입니다!
이거 어떻게 하는지 아는 사람?
동일한 기능을 찾다가 이 질문을 발견했습니다.
@Jonathan Ong는 위의 의견에서 경로에 배열을 사용하는 것은 더 이상 권장되지 않지만 Express 4에서 명시적으로 설명되며 Express 3.x에서 작동한다고 언급했습니다. 다음은 시도할 항목의 예입니다.
app.get(
['/test', '/alternative', '/barcus*', '/farcus/:farcus/', '/hoop(|la|lapoo|lul)/poo'],
function ( request, response ) {
}
);
내부에서request
객체, 경로:/hooplul/poo?bandle=froo&bandle=pee&bof=blarg
:
"route": {
"keys": [
{
"optional": false,
"name": "farcus"
}
],
"callbacks": [
null
],
"params": [
null,
null,
"lul"
],
"regexp": {},
"path": [
"/test",
"/alternative",
"/barcus*",
"/farcus/:farcus/",
"/hoop(|la|lapoo|lul)/poo"
],
"method": "get"
},
매개 변수에서 발생하는 작업을 기록합니다.현재 요청에 사용되었는지 여부에 관계없이 가능한 모든 경로의 캡처 그룹 및 매개 변수를 인식합니다.
따라서 어레이를 통해 여러 경로를 쉽게 쌓을 수 있지만, 매개 변수 또는 캡처 그룹을 통해 사용된 경로에서 유용한 정보를 수집하려는 경우에는 그 부작용을 예측할 수 없습니다.이중화/에일리어싱에 더 유용할 수 있으며, 이 경우 매우 잘 작동할 것입니다.
편집: 아래 @c24w의 답변도 참조하시기 바랍니다.
편집 2: 이것은 적당히 인기 있는 답변입니다.익스프레스는 다음과 같습니다.JS는 대부분의 Node.js 라이브러리와 마찬가지로 이동 가능한 축제입니다.위의 라우팅은 여전히 작동하지만(현재 사용 중인 매우 편리한 기능), 요청 개체의 출력은 보증할 수 없습니다(제가 설명한 것과 확실히 다릅니다).원하는 결과를 얻을 수 있도록 주의 깊게 테스트하십시오.
app.get('/:var(bla|blabla)?', todo)
:var
설정합니다.req.param
당신이 사용하지 않는 것.정규식을 설정하는 경우에만 사용됩니다.
(bla|blabla)
문자열과 일치하도록 정규식을 설정합니다.bla
그리고.blablah
.
?
전체 정규식을 선택적으로 만들어 일치시킵니다./
뿐만 아니라.
앞서 언급한 것처럼 다양한 경로를 전달할 수 있으며, 다음과 같이 매우 효과적입니다.
var a = ['/', '/blabla', '/blablablabla'];
app.get(a, todo);
Kevin의 답변을 자세히 설명하자면, 4.x 문서의 내용입니다.
미들웨어 기능이 호출되는 경로. 다음 중 하나일 수 있습니다.
- 경로를 나타내는 문자열입니다.
- 경로 패턴입니다.
- 경로를 일치시키는 정규식 패턴입니다.
- 상기 중 어느 하나의 조합의 배열.
다음과 같은 몇 가지 예가 있습니다.
은 하는 경로와 일치합니다.
/abcd
,/xyza
,/lmn
,그리고./pqr
:app.use(['/abcd', '/xyza', /\/lmn|\/pqr/], function (req, res, next) { next(); });
저는 다음을 위해 갔습니다.
['path', 'altPath'].forEach(function(path) {
app.get(path, function(req, res) { etc. });
});
언급URL : https://stackoverflow.com/questions/15350025/express-js-single-routing-handler-for-multiple-routes-in-a-single-line
'source' 카테고리의 다른 글
폼 작업을 변경하기 위한 Jquery (0) | 2023.08.30 |
---|---|
Android:컨텐츠 URI에서 파일 URI를 가져오시겠습니까? (0) | 2023.08.30 |
표준 시간대에 대한 UTC 날짜/시간 문자열 (0) | 2023.08.30 |
각 행에서 두 개의 열을 선택하여 값 집합을 매핑하는 중 (0) | 2023.08.30 |
리와 울에서 검은색 점 제거 (0) | 2023.08.30 |