UFO ET IT

Node.js의 Express.js에서 GET(쿼리 문자열) 변수를 가져오는 방법은 무엇입니까?

ufoet 2023. 6. 2. 22:07
반응형

Node.js의 Express.js에서 GET(쿼리 문자열) 변수를 가져오는 방법은 무엇입니까?

Node를 Node. 것처럼 수 ?$_GETPHP 로?

나는 Node.js에서 우리가 요청에 있는 URL을 얻을 수 있다는 것을 알고 있습니다.쿼리 문자열 매개 변수를 가져오는 방법이 있습니까?

태그에서 Express.js를 언급했으므로 Express 관련 답변인 userequ.query가 있습니다.예.

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('id: ' + req.query.id);
});

app.listen(3000);

Express에서는 이미 완료되었으므로 require.query를 사용하여 다음 작업을 수행할 수 있습니다.

var id = req.query.id; // $_GET["id"]

그렇지 않으면 NodeJS에서 req.url 및 내장된 파일에 액세스할 수 있습니다.url모듈에서 수동으로 url.dll로 이동합니다.

var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;

서용사를 합니다.req.query.

req.params쿼리 문자열 매개 변수가 아닌 경로 매개 변수만 가져옵니다.급행 또는 돛 설명서를 참조하십시오.

(매개 변수 필요)경로 매개 변수를 확인합니다(예: /user/:id).

(req.vmx) 쿼리 문자열 매개변수를 확인합니다(예: ?id=12 url 인코딩된 본문 매개변수를 확인합니다)

(req.body), ex: id=12 URL 인코딩된 요청 본문을 사용하려면 req.body가 개체여야 합니다.이 작업은 _express를 사용하여 수행할 수 있습니다.bodyParser 미들웨어.

즉, 대부분의 경우 출처에 관계없이 매개 변수의 값을 얻고자 합니다.때는 이경, 용사를 합니다.req.param('foo') 기능은 Express 4: http://expressjs.com/en/4x/api.html#req.param 에서 더 이상 사용되지 않습니다.

변수가 경로 매개 변수, 쿼리 문자열 또는 인코딩된 요청 본문에 있었는지 여부에 관계없이 매개 변수 값이 반환됩니다.

사이드 노트 - 세 가지 유형의 요청 매개 변수의 교차점을 얻는 것을 목표로 하는 경우(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;

forget URL이 있어야 하는 위치

/path/filename?id=123&option=456
//get query&params 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"}

})

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);

은 기값을 수있다니습과 함께 사용할 수 .destructuringtoo:too:too:too:

// 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 메서드를 통해 매개 변수를 전달하는 방법은 두 가지가 있습니다.

1 : /같은 : /routename/:paramname과 같은 매개변수를 전달하는 MVC 접근법
변수 수 . 를 들어 하십시오. "req.params.paramname"과 같은 경우입니다. 예를 들어 Id가 매개 변수로 예상되는 아래 코드를 참조하십시오.
링크는 다음과 같을 수 있습니다: 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 Access : 를 사용하여 로 전달하는 2 : '?' 에 대한 설명
를 들어 쿼리 코드를 하십시오.
링크는 다음과 같을 수 있습니다: 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);

다음과 같은 작업을 수행할 수 있어야 합니다.

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")
})

간단한 가져오기 방법을 구체적으로 표시

  1. strings( 문자열 뒤에 있음)?과 같이https://...?user=abc&id=123

     var express = require('express');
    
     var app = express();
    
     app.get('/', function(req, res){
         res.send('id: ' + req.query.id);
     });
    
     app.listen(3000);
    
  2. 과 같은 매개 변수:https://.../get/users/:id

     var express = require('express');
     var app = express();
    
     app.get('/get/users/:id', function(req, res){
         res.send('id: ' + req.params.id);
     });
    
     app.listen(3000);
    

업데이트 2014년 5월 4일

이전 답변은 여기에 저장됩니다. https://gist.github.com/stefek99/b10ed037d2a4a323d638


: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");

: 앱실:node app.js

브우저서방문: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"parse.node parse.js"를합니다.

화이트쿼크가 잘 대응했습니다.그러나 현재 버전의 Node.js 및 Express.js에서는 한 줄이 더 필요합니다.'http 번째 줄해야 합니다. 'require http'("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));

산출량

모든 쿼리 문자열: {"id": "3", "activatekey": "$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjz fUrqLrgS3zXJVfVRK"}

특정 인쇄 방법:

console.log("activatekey: " + req.query.activatekey);

산출량

활성화 키: $2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK

사용할 수 있습니다.

request.query.<varible-name>;

express ^4.15.4와 함께 사용할 수 있습니다.

var express = require('express'),
    router = express.Router();
router.get('/', function (req, res, next) {
    console.log(req.query);
});

이게 도움이 되길 바랍니다.

express.js컨트롤러 기능에서 수행해야 하는 작업은 다음과 같습니다.

app.get('/', (req, res, next) => {
   const {id} = req.query;
   // rest of your code here...
})

es6 구문을 사용한다고 가정하면 이것이 전부입니다.

PD님.{id}의 약자Object destructuring새로운 es6 기능

app.get('/user/:id', function(req, res) {
    res.send('user' + req.params.id);    
});

이를 사용하거나 요청 매개 변수에서 특수 요소를 구문 분석하기 위해 본문 파서를 사용할 수 있습니다.

URL을 고려하십시오 -> 이 URL ->/api/endpoint/:id?name=sahil여기서 ID는 param이고 이름은 query입니다.과 같은 수 .

app.get('/api/endpoint/:id', (req, res) => {
  const name = req.query.name; // query
  const id = req.params.id //params
});

다음을 사용하여 쿼리에 액세스하는 것과 관련하여 많은 답변이 있습니다.request.query하지만, 아무도 그것의 유형에 대해 언급하지 않았습니다.쿼리 문자열 유형은 문자열 또는 배열일 수 있으며 이 유형은 사용자가 제어합니다.

예를 들어 다음 코드를 사용합니다.

const express = require("express");
const app = express();

app.get("/", function (req, res) {
  res.send(`Your name is ${(req.query.name || "").length} characters long`);
});

app.listen(3000);

요청 중/?name=bob돌아올 것입니다Your name is 3 characters long하지만 요청합니다./?name=bob&name=jane돌아올 것입니다Your name is 2 characters long이제 매개 변수가 배열이기 때문입니다.['bob', 'jane'].

Express는 단순 및 확장 쿼리 파서 2개를 제공하며, 둘 다 문자열 또는 배열을 제공합니다.저는 개인적으로 가능한 부작용을 확인하거나 유형을 검증하는 방법보다는 일관된 유형(모든 배열 또는 모든 문자열)을 갖도록 파서를 재정의해야 한다고 생각합니다.

const express = require("express");
const app = express();

const querystring = require("querystring");

// if asArray=false only the first item with the same name will be returned
// if asArray=true all items will be returned as an array (even if they are a single item)
const asArray = false;
app.set("query parser", (qs) => {
  const parsed = querystring.parse(qs);
  return Object.entries(parsed).reduce((previous, [key, value]) => {
    const isArray = Array.isArray(value);
    if (!asArray && isArray) {
      value = value[0];
    } else if (asArray && !isArray) {
      value = [value];
    }

    previous[key] = value;
    return previous;
  }, {});
});

app.get("/", function (req, res) {
  res.send(`Your name is ${(req.query.name || "").length} characters long`);
});

app.listen(3000);

그래서, 이 "id"를 받을 수 있는 두 가지 방법이 있습니다: 1) 매개 변수를 사용하는 것: 코드 매개 변수는 다음과 같이 보일 것입니다: 배열이 있다고 가정하고,

const courses = [{
    id: 1,
    name: 'Mathematics'
},
{
    id: 2,
    name: 'History'
}
];

그런 다음 다음 매개 변수에 대해 다음과 같은 작업을 수행할 수 있습니다.

app.get('/api/posts/:id',(req,res)=>{
    const course = courses.find(o=>o.id == (req.params.id))
    res.send(course);
});

또 다른 방법은 쿼리 매개 변수를 사용하여 URL이 "......."처럼 보이도록 하는 것입니다.\api\xyz?id=1" 여기서 "?id=1"은 쿼리 부분입니다.이 경우 다음과 같은 작업을 수행할 수 있습니다.

app.get('/api/posts',(req,res)=>{
    const course = courses.find(o=>o.id == (req.query.id))
    res.send(course);
});

express를 사용하지 않으려면 다음 예를 사용합니다.

var http = require('http');
const url = require('url');

function func111(req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  var q = url.parse(req.url, true);
  res.end("9999999>>> " + q.query['user_name']); 
}

http.createServer(func111).listen(3000); 

용도:

curl http://localhost:3000?user_name=user1

1일 단위로

url 모듈을 사용하여 url.dll을 사용하여 매개 변수를 수집할 수 있습니다.

var url = require('url');
var url_data = url.parse(request.url, true);
var query = url_data.query;

expressjs에서 그것은 다음과 같습니다.

var id = req.query.id;

예:

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
});

만약 당신이 보낼 필요가 있다면,GET에의 요청.IP뿐만 아니라Domain(다른 답변에서는 언급하지 않았습니다.)port변수), 다음 함수를 사용할 수 있습니다.

function getCode(host, port, path, queryString) {
    console.log("(" + host + ":" + port + path + ")" + "Running httpHelper.getCode()")

    // Construct url and query string
    const requestUrl = url.parse(url.format({
        protocol: 'http',
        hostname: host,
        pathname: path,
        port: port,
        query: queryString
    }));

    console.log("(" + host + path + ")" + "Sending GET request")
    // Send request
    console.log(url.format(requestUrl))
    http.get(url.format(requestUrl), (resp) => {
        let data = '';

        // A chunk of data has been received.
        resp.on('data', (chunk) => {
            console.log("GET chunk: " + chunk);
            data += chunk;
        });

        // The whole response has been received. Print out the result.
        resp.on('end', () => {
            console.log("GET end of response: " + data);
        });

    }).on("error", (err) => {
        console.log("GET Error: " + err);
    });
}

파일 맨 위에 모듈이 필요한 경우를 놓치지 마십시오.

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

또한 사용할 수 있다는 것을 명심하십시오.https보안 도메인과 ssl을 통해 통신하기 위한 모듈입니다. 따라서 이 두 줄은 변경됩니다.

https = require("https");
...
https.get(url.format(requestUrl), (resp) => { ......

저는 express@4.16에서 MEANJS 0.6.0을 사용하고 있습니다. 좋습니다.

고객:

컨트롤러:

var input = { keyword: vm.keyword };
ProductAPi.getOrder(input)

서비스:

this.getOrder = function (input) {return $http.get('/api/order', { params: input });};

서버

경로들

app.route('/api/order').get(products.order);

콘트롤러

exports.order = function (req, res) {
  var keyword = req.query.keyword
  ...

나처럼 하라

npm  query-string
import queryString from "query-string";

export interface QueryUrl {
  limit?: number;
  range?: string;
  page?: number;
  filed?: string;
  embody?: string;
  q?: string | object;
  order?: number;
  sort?: string;

}

 let parseUri: QueryUrl = queryString.parse(uri.query);

언급URL : https://stackoverflow.com/questions/6912584/how-to-get-get-query-string-variables-in-express-js-on-node-js

반응형