2016-10-21 4 views
0

새로운 위젯을 생성하는 POST 메소드가 포함 된 REST API를 사용하고 있습니다. 나는이 같은 모습을 보낼 필요가 데이터 :REST API의 POST 메소드를 통해 키/값 데이터 보내기

key       |   value 
widgetnum      |   12345 
02:00:00_03:00:00_mtwrfsn  |   [email protected] 
12:00:00_15:00:00_mt   |   [email protected] 

지금까지, 나는 몸에 두 개의 키를 통해 데이터를 게시되었습니다 최대 :

widgetnum : 12345 
tc : 02:00:00_03:00:[email protected],12:00:00_15:00:[email protected] 

위의 예에서 볼 수 있듯이 , 키 "tc"실제로 쉼표로 구분 된 두 개의 레코드에 대한 정보가 들어 있습니다. 하지만 어제는 우편 배달부 응용 프로그램에서 주위에 파고 있던 ... 나는 여러 키/값 쌍을 보낼 수 있다는 것을 깨달았다. 나는 이것이 전에 결코 클릭하지 않은 이유를 모른다. 어떤 경우 (예 : 멍청한 놈), 지금 실현, 사실이 작업을 수행 할 수 있습니다

widgetnum : 12345 
02:00:00_03:00:00_mtwrfsn : [email protected] 
12:00:00_15:00:00_mt : [email protected] 

질문

내 자바 스크립트 코드이기 때문에 더 효율적 내가 지금까지 데이터를 POST 방식을 변경하는 것입니다 걱정 되니? 그래서 예를 들어, 오늘, 내 코드는 다음과 같습니다

router.post('/', function(req, res, next) { 
     var widgetnum = req.body.widgetnum; 
     var tc = req.body.tc; 
     var tc_array = tc.split(","); 

을 일명 - 나는 매우 특정 키 이름을 사용하여 내 데이터를 볼 수 있어요.

그러나 내가 데이터를 POST하는 방식을 변경하면 모든 키를 찾기 위해 루프를 실행해야한다고 생각합니다. 이 같은
그래서 뭔가 : 이것은 치료하는 질문처럼 보인다 경우

router.post('/', function(req, res, next) { 
     //loop through req.body object. 
     for (var key in req.body) { 
       if (req.body.hasOwnProperty(key)) { 
         // add some logic here to test if the key is 
         // widgetnum or a tc type key. 
         console.log(key + " -> " + req.body[key]); 
       } 
     } 
     res.status(200).send('ok'); 
     return; 
}); 

내가 사과 - 아마입니다. 그러나 하나의 키/값 쌍에 여러 개의 tc 레코드를 POST하는 것이 좋지 않은 경우이를 변경해 드리겠습니다. 아마도 데이터를 찾기 위해 자바 스크립트 코드를 작성하는보다 효율적인 방법이있을 것입니다.

감사합니다.

+0

왜 JSON 같은 지정된 키/값 형식을 사용하지 않습니까? 이것은 광범위하게 지원되며, node.js 측에서 express를 사용하기 때문에'const bodyParser = require ('body-parser);와 같이 간단합니다. ' – DrakaSAN

+0

감사합니다. 자세한 내용은 주셔서 감사합니다. Google bodyParser.json을 사용하여 데이터를 보내는 방법과 구문 분석하는 방법을 모두 찾을 수 있습니다. – Happydevdays

+0

대신'widgetnum : 12345 tc : 02 : 00 : 00_03 : 00 : 00_mtwrfsn_johndoe @ myemail.com, 12 : 00 : 00_15 : 00 : 00_mt_janedoe @ yahoo.12345, \t "TC": \t { \t \t "02 : 00 : 00_03 : 00 : 00_mtwrfsn"[email protected], \t \t "12 com','{ \t"widgetnum "을 보내 : 00 : 00 : 00 : 15 : 00 : 00_mt ": [email protected] \t } – DrakaSAN

답변

0

키/값 쌍을 보내고 받으려면 (거의) 작업을 수행하는 형식이 이미 있습니다. 그 중 하나는 JSON으로, 특히 JavaScript에서 널리 지원됩니다. 이미 표현을 사용하고 있기 때문에

, 당신은 body-parser를 추가하고 자동으로 JSON 구문 분석을 설정할 수 있습니다

는 데이터 전송

는 (우편 배달부 : 체형 :. 응용 프로그램/JSON이 몸에 붙여 넣기 복사를

{ 
    "widgetnum" : 12345, 
    "tc" : { 
     "02:00:00_03:00:00_mtwrfsn": [email protected], 
     "12:00:00_15:00:00_mt": [email protected] 
    } 
} 

서버 코드 : JSON 보낸으로 당신이 할 수 있도록

"use strict"; 

const express = require('express'), 
    router = express.Router(), 
    bodyParser = require('body-parser'); 

router.use(bodyParser.json()); 

router.post('/', function(req, res, next) { 
    var widgetnum = req.body.widgetnum; 
    var tc = req.body.tc; 
    //No more need for tc_array 
    //... 
} 

사용자 정의 형식 더 이상 필요하고, req.body은 같은 형식의 JS 객체가 될 것입니다 같은 것들 :

console.log(req.body.tc['02:00:00_03:00:00_mtwrfsn']); //print [email protected] 
console.log(Object.keys(req.body.tc)); //Print ['02:00:00_03:00:00_mtwrfsn', '12:00:00_15:00:00_mt'] 
+0

이것은 훨씬 더 깨끗합니다. 감사! – Happydevdays

관련 문제