Node.js: req.query[]와 req.param의 차이
다음을 통해 QUREY_STRING 인수를 얻는 것과 차이가 있습니까?req.query[myParam]
그리고.req.params.myParam
? 그렇다면 언제 어느 것을 사용해야 합니까?
이 경로가 주어진 경우
app.get('/hi/:param1', function(req,res){} );
// regex version
app.get(/^\/hi\/(.*)$/, function(req,res){} );
// unnamed wild card
app.get('/hi/*', function(req,res){} );
그리고 이 URL이 주어졌습니다.http://www.google.com/hi/there?qs1=you&qs2=tube
다음을 가질 수 있습니다.
요망이 있는
{
qs1: 'you',
qs2: 'tube'
}
요망하는 사람들
{
param1: 'there'
}
경로 정의에 정규식을 사용할 경우 캡처 그룹은 다음을 사용하여 배열에 제공됩니다.
req.params[n]
, 여기서 n은 n번째 캡처 그룹입니다.이 규칙은 문자열 경로가 있는 이름 없는 와일드 카드 일치에 적용됩니다.
req.params
경로 매개 변수(URL의 경로 부분에 있음)를 포함하고 URL 쿼리 매개 변수(다음에 있음)를 포함합니다.?
URL)에 입력합니다.
두 위치 모두에서 매개변수를 검색하는 데 사용할 수도 있습니다.req.body
), 그러나 이 메서드는 현재 더 이상 사용되지 않습니다.
요청.params
경로 이름을 다음과 같이 정의했다고 가정합니다.
https://localhost:3000/user/:userId
다음이 될 것입니다.
https://localhost:3000/user/5896544
인쇄할 경우 여기: request.params
{
userId : 5896544
}
그렇게
request.params.userId = 5896544
따라서 request.params는 명명된 경로의 속성을 포함하는 개체입니다.
부탁을 드립니다
요청이.쿼리는 URL의 쿼리 매개 변수에서 가져옵니다.
https://localhost:3000/user?userId=5896544
부탁을 드립니다
{
userId: 5896544
}
그렇게
request.query.userId = 5896544
이제 점 표기법을 사용하여 쿼리에 액세스할 수 있습니다.
액세스하려면 GET 요청을 수신하고 있다고 말합니다./checkEmail?type=email&utm_source=xxxx&email=xxxxx&utm_campaign=XX
사용한 쿼리를 가져오려고 합니다.
var type = req.query.type,
email = req.query.email,
utm = {
source: req.query.utm_source,
campaign: req.query.utm_campaign
};
요청 수신을 위한 자체 정의된 매개 변수(예:
router.get('/:userID/food/edit/:foodID', function(req, res){
//sample GET request at '/xavg234/food/edit/jb3552'
var userToFind = req.params.userID;//gets xavg234
var foodToSearch = req.params.foodID;//gets jb3552
User.findOne({'userid':userToFind}) //dummy code
.then(function(user){...})
.catch(function(err){console.log(err)});
});
나는 한가지 중요한 것을 언급하고 싶습니다.req.query
, 왜냐하면 저는 현재 페이지 기능을 기반으로 작업하고 있기 때문입니다.req.query
한 가지 흥미로운 예를 보여 드리자면...
예:
// Fetching patients from the database
exports.getPatients = (req, res, next) => {
const pageSize = +req.query.pageSize;
const currentPage = +req.query.currentPage;
const patientQuery = Patient.find();
let fetchedPatients;
// If pageSize and currentPage are not undefined (if they are both set and contain valid values)
if(pageSize && currentPage) {
/**
* Construct two different queries
* - Fetch all patients
* - Adjusted one to only fetch a selected slice of patients for a given page
*/
patientQuery
/**
* This means I will not retrieve all patients I find, but I will skip the first "n" patients
* For example, if I am on page 2, then I want to skip all patients that were displayed on page 1,
*
* Another example: if I am displaying 7 patients per page , I want to skip 7 items because I am on page 2,
* so I want to skip (7 * (2 - 1)) => 7 items
*/
.skip(pageSize * (currentPage - 1))
/**
* Narrow dont the amound documents I retreive for the current page
* Limits the amount of returned documents
*
* For example: If I got 7 items per page, then I want to limit the query to only
* return 7 items.
*/
.limit(pageSize);
}
patientQuery.then(documents => {
res.status(200).json({
message: 'Patients fetched successfully',
patients: documents
});
});
};
당신은 알게 될 것입니다.+
앞에 표를 던지다req.query.pageSize
그리고.req.query.currentPage
왜요? 삭제하면.+
이 경우 오류가 발생하고 잘못된 유형을 사용하기 때문에 오류가 발생합니다(오류 메시지 'limit' 필드는 숫자여야 함).
중요: 이러한 쿼리 매개 변수에서 무언가를 추출하는 경우 기본적으로 해당 매개 변수는 항상 문자열이 됩니다. URL이 제공되고 텍스트로 처리되기 때문입니다.
숫자로 작업하고 질의문을 텍스트에서 숫자로 변환해야 한다면 문장 앞에 더하기 기호를 붙이면 됩니다.
만약 당신이 여기서 온다면 그 말을 덧붙이고 싶습니다.axios
이 만들고, (GET/POST)query/url params
로 읽을 수 있는)req.query
를 할 수 있습니다.
axios.post('/users', {...data}, {
headers: {...anyHeaders},
params: {uid: `${uid}`}
})
당신은 을 .path/route variables
로 읽을 수 있는)req.params
을 할 수 있습니다.
axios.get(`/users/${uid`}, {
headers: {...anyHeaders}
})
서버에서 쿼리 파라미터를 읽을 때 사용하는 이름은 클라이언트의 이름과 일치해야 합니다.할 수 있는 우법),다와 기능을 할 수 .react-router
행:/path/:variable
).
언급URL : https://stackoverflow.com/questions/14417592/node-js-difference-between-req-query-and-req-params
'programing' 카테고리의 다른 글
IN 절에서 Oracle Table Type을 사용하면 컴파일이 실패함 (0) | 2023.09.27 |
---|---|
jQuery : eq() vs get() (0) | 2023.09.27 |
러스트 코드에서 C나 C++ 함수를 호출할 수 있습니까? (0) | 2023.09.27 |
장고, 사용자 지정 500/404 오류 페이지 생성 (0) | 2023.09.27 |
mysql에 levenshtein 기능을 추가하는 방법은? (0) | 2023.09.17 |