Node.js의 Express.js에서 GET (쿼리 문자열) 변수를 얻는 방법은 무엇입니까?
$_GET
PHP 에서 가져온 것처럼 Node.js의 쿼리 문자열에서 변수를 가져올 수 있습니까?
Node.js에서 요청의 URL을 얻을 수 있다는 것을 알고 있습니다. 쿼리 문자열 매개 변수를 가져 오는 방법이 있습니까?
Express에서는 이미 완료되었으며 req.query 를 사용 하면 됩니다.
var id = req.query.id; // $_GET["id"]
그렇지 않으면 NodeJS에서 req.url 과 내장 url
모듈을 [url.parse] ( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost )에 수동으로 액세스 할 수 있습니다.
var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;
태그에서 Express.js를 언급 했으므로 다음은 Express 관련 답변입니다. req.query 사용 . 예
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('id: ' + req.query.id);
});
app.listen(3000);
Express에서는 req.query
.
req.params
쿼리 문자열 매개 변수가 아닌 경로 매개 변수 만 가져옵니다. express 또는 sails 문서를 참조하세요 .
(req.params) 경로 매개 변수 확인 (예 : / user / : id)
(req.query) 쿼리 문자열 매개 변수를 확인합니다. 예 :? id = 12 urlencoded 본문 매개 변수를 확인합니다.
(req.body), 예 : id = 12 urlencoded 요청 본문을 활용하려면 req.body가 객체 여야합니다. 이는 _express.bodyParser 미들웨어를 사용하여 수행 할 수 있습니다.
즉, 대부분의 경우 소스에 관계없이 매개 변수의 값을 가져 오려고합니다. 이 경우 req.param('foo')
.
매개 변수 값은 변수가 경로 매개 변수, 쿼리 문자열 또는 인코딩 된 요청 본문에 있었는지에 관계없이 반환됩니다.
참고 : 세 가지 유형의 요청 매개 변수 (PHP와 유사)의 교차점을 얻으려는 경우 매개 변수 $_REQUEST
를 병합하기 만하면 됩니다. Sails에서 설정 하는 방법은 다음과 같습니다 . 경로 / 경로 매개 변수 객체 ( req.params
)에는 배열 속성이 있으므로 순서가 중요합니다 ( Express 4에서 변경 될 수 있음 ).
Express.js의 경우 원하는 작업 req.params
:
app.get('/user/:id', function(req, res) {
res.send('user' + req.params.id);
});
다른 답변에서 배웠고 내 사이트 전체에서이 코드를 사용하기로 결정했습니다.
var query = require('url').parse(req.url,true).query;
그런 다음 전화하면됩니다.
var id = query.id;
var option = query.option;
get의 URL은
/path/filename?id=123&option=456
ES6 및 Express를 사용하는 경우 다음 destructuring
접근 방식을 시도하십시오 .
const {id, since, fields, anotherField} = request.query;
문맥:
const express = require('express');
const app = express();
app.get('/', function(req, res){
const {id, since, fields, anotherField} = req.query;
});
app.listen(3000);
다음과 함께 기본값을 사용할 수도 있습니다 destructuring
.
// sample request for testing
const req = {
query: {
id: '123',
fields: ['a', 'b', 'c']
}
}
const {
id,
since = new Date().toString(),
fields = ['x'],
anotherField = 'default'
} = req.query;
console.log(id, since, fields, anotherField)
//get query¶ms in express
//etc. example.com/user/000000?sex=female
app.get('/user/:id', function(req, res) {
const query = req.query;// query = {sex:"female"}
const params = req.params; //params = {id:"000000"}
})
다음과 같이 할 수 있어야합니다.
var http = require('http');
var url = require('url');
http.createServer(function(req,res){
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
console.log(query); //{Object}
res.end("End")
})
GET 메소드를 통해 매개 변수를 전달하는 두 가지 방법이 있습니다.
방법 1 : / routename / : paramname과 같은 매개 변수를 전달하는 MVC 방법
이 경우 req.params.paramname을 사용하여 매개 변수 값을 가져올 수 있습니다. 예를 들어 아래 코드를 참조하십시오. Id를 param
링크 로 기대하고 있습니다. http://myhost.com/items/23
var express = require('express');
var app = express();
app.get("items/:id",function(req,res){
var id = req.params.id;
//further operations to perform
});
app.listen(3000);
방법 2 : 일반적인 접근 방식 : '?'를 사용하여 변수를 쿼리 문자열로 전달 연산자의
경우 쿼리 매개 변수
링크 로 Id를 기대하는 코드 는 다음과 같습니다. http://myhost.com/items?id=23
var express = require('express');
var app = express();
app.get("/items",function(req,res){
var id = req.query.id;
//further operations to perform
});
app.listen(3000);
업데이트 2014 년 5 월 4 일
여기에 보존 된 이전 답변 : https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) Express 설치 : npm install express
app.js
var express = require('express');
var app = express();
app.get('/endpoint', function(request, response) {
var id = request.query.id;
response.end("I have received the ID: " + id);
});
app.listen(3000);
console.log("node express app started at http://localhost:3000");
2) 앱 실행 : node app.js
3) 브라우저에서 방문 : http://localhost:3000/endpoint?id=something
ID를 받았습니다 : 무언가
(내 답변 이후 많은 것이 변경되었으며 최신 상태로 유지할 가치가 있다고 생각합니다)
포트 9080에서 수신 대기하는 작은 Node.js HTTP 서버는 GET 또는 POST 데이터를 구문 분석하고 응답의 일부로 클라이언트에 다시 전송합니다.
var sys = require('sys'),
url = require('url'),
http = require('http'),
qs = require('querystring');
var server = http.createServer(
function (request, response) {
if (request.method == 'POST') {
var body = '';
request.on('data', function (data) {
body += data;
});
request.on('end',function() {
var POST = qs.parse(body);
//console.log(POST);
response.writeHead( 200 );
response.write( JSON.stringify( POST ) );
response.end();
});
}
else if(request.method == 'GET') {
var url_parts = url.parse(request.url,true);
//console.log(url_parts.query);
response.writeHead( 200 );
response.write( JSON.stringify( url_parts.query ) );
response.end();
}
}
);
server.listen(9080);
으로 저장하고 parse.js
"node parse.js"를 입력하여 콘솔에서 실행하십시오.
Whitequark는 친절하게 응답했습니다. 그러나 현재 버전의 Node.js 및 Express.js에서는 한 줄 더 필요합니다. 'require http'(두 번째 줄)를 추가해야합니다. 이 호출이 작동하는 방법을 보여주는 더 자세한 예제를 여기에 게시했습니다. 실행 후 http://localhost:8080/?name=abel&fruit=apple
브라우저에 입력 하면 코드를 기반으로 멋진 응답을받을 수 있습니다.
var express = require('express');
var http = require('http');
var app = express();
app.configure(function(){
app.set('port', 8080);
});
app.get('/', function(req, res){
res.writeHead(200, {'content-type': 'text/plain'});
res.write('name: ' + req.query.name + '\n');
res.write('fruit: ' + req.query.fruit + '\n');
res.write('query: ' + req.query + '\n');
queryStuff = JSON.stringify(req.query);
res.end('That\'s all folks' + '\n' + queryStuff);
});
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
})
매우 간단합니다.
URL 예 :
http://stackoverflow.com:3000/activate_accountid=3&activatekey=$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK
다음을 사용하여 쿼리 문자열의 모든 값을 인쇄 할 수 있습니다.
console.log("All query strings: " + JSON.stringify(req.query));
산출
All query strings : { "id":"3","activatekey":"$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjz fUrqLrgS3zXJVfVRK"}
To print specific:
console.log("activatekey: " + req.query.activatekey);
Output
activatekey: $2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK
You can use with express ^4.15.4:
var express = require('express'),
router = express.Router();
router.get('/', function (req, res, next) {
console.log(req.query);
});
Hope this helps.
You can use
request.query.<varible-name>;
In express.js
you can get it pretty easy, all you need to do in your controller function is:
app.get('/', (req, res, next) => {
const {id} = req.query;
// rest of your code here...
})
And that's all, assuming you are using es6 syntax.
PD. {id}
stands for Object destructuring
, a new es6 feature.
app.get('/user/:id', function(req, res) {
res.send('user' + req.params.id);
});
You can use this or you can try body-parser for parsing special element from the request parameters.
It actually simple:
const express= require('express');
const app = express();
app.get('/post', (req, res, next) => {
res.send('ID:' + req.query.id + ' Edit:'+ req.query.edit);
});
app.listen(1000);
// localhost:1000/post?id=123&edit=true
// output: ID: 123 Edit: true
you can use url module to collect parameters by using url.parse
var url = require('url');
var url_data = url.parse(request.url, true);
var query = url_data.query;
In expressjs it's done by,
var id = req.query.id;
Eg:
var express = require('express');
var app = express();
app.get('/login', function (req, res, next) {
console.log(req.query);
console.log(req.query.id); //Give parameter id
});
From my point of view I think that many people mix two different concepts. During the REST development I was familiar with passing information in the URL with two ways "path variables" and "request parameters"(query parameters). The RFC describes the parts of URI like this: enter link description here So I understood that author would like to know how to pass request parameters. I would only want to make the topic easier to understand, but the solution was mentioned here many times.
You can get query parameters from the URI with request.query.<name of the parameter>
, the second mentioned solution was request.params.<name of the parameter>
and with this you can get the path variables.
So, there are two ways in which this "id" can be received: 1) using params: the code params will look something like : Say we have an array,
const courses = [{
id: 1,
name: 'Mathematics'
},
{
id: 2,
name: 'History'
}
];
Then for params we can do something like:
app.get('/api/posts/:id',(req,res)=>{
const course = courses.find(o=>o.id == (req.params.id))
res.send(course);
});
2) Another method is to use query parameters. so the url will look something like ".....\api\xyz?id=1" where "?id=1" is the query part. In this case we can do something like:
app.get('/api/posts',(req,res)=>{
const course = courses.find(o=>o.id == (req.query.id))
res.send(course);
});
I am using MEANJS 0.6.0 with express@4.16, it's good
Client:
Controller:
var input = { keyword: vm.keyword };
ProductAPi.getOrder(input)
services:
this.getOrder = function (input) {return $http.get('/api/order', { params: input });};
Server
routes
app.route('/api/order').get(products.order);
controller
exports.order = function (req, res) {
var keyword = req.query.keyword
...
In Express, we can simply use req.query.<name>
. It's works same as that of $_GET['name']
in PHP.
why not mixed with server code
e.g . php
<script>
var ip=<?php echo($_SERVER['REMOTE_ADDR']);?>
</script>
--------Accessing Query String Data-------
Suppose this is the link http://webapplog.com/search?term=node.js&page=1
So in express you can use :
req.query.term
req.query.page
orreq.query
(it will fetch the query in an Object)
//Example
app.get('http://webapplog.com/search?term=node.js&page=1',(req, res)=>{ res.json({term:req.query.term, page:req.query.page}) })
--------Accessing URL Parameters-------
Suppose this is the link http://webapplog.com/node.js/pages/100
So in express you can use : app.get('/:term/pages/:page',....)
req.params.term
req.params.page
// Example
app.get('http://webapplog.com/:term/pages/:page',(req, res)=>{ res.json({term:req.params.term, page:req.params.page}) })
'development' 카테고리의 다른 글
ArrayList 변환 (0) | 2020.09.27 |
---|---|
주어진 요소에 클래스를 어떻게 추가합니까? (0) | 2020.09.27 |
git : 새 파일을 포함하여 모든 작업 디렉토리 변경을 취소합니다. (0) | 2020.09.27 |
서블릿은 어떻게 작동합니까? (0) | 2020.09.27 |
문자열에서 공백을 어떻게 제거합니까? (0) | 2020.09.27 |