익스프레스 미들웨어 본체 파서

신청 기관은 HTTP 요청 종을 포함, POST, PUT, 요청 방법, 소위 요청, 네이티브 HTTP Nodejs 모듈, 수신 방식을 분석하기 위해 유량계 몸체에 따라 요청 PATCH 삼가지.
본체 파서 HTTP 요청 본체 미들웨어 파싱 JSON을 파싱이 모듈을 이용하여, 원시, 텍스트, URL 인코딩 형식 요청 본문


노드 원시 HTTP 모듈은 데이터 요청 REQ 객체에 대한 사용자 요청에 캡슐화되고, 개체가 IncomingMessage 인 객체는 스트림 오브젝트를 판독한다. 기본 HTTP 서버가 타사 또는 구문 분석 모듈에 의존하지 않는 경우, 그리고 요청할 수있는 다음과 같은 방법은 요청 본문을 구문 분석


    CONST는 HTTP = ( 'HTTP'필요 )를; 

    http.createServer (함수 (REQ, 입술) { 
        경우 (req.method.toLowerCase () === '포스트' ) { 
            본체하자 = '' ;
             // 此步骤为接收数据 
            req.on ( '데이터' , 함수 (청크) { 
                본체 + = 청크; 
            }); 
            // 开始解析 
            req.on ( ''말단 , 함수 () {
                 경우 (req.headers [ '콘텐츠 유형'] 같이 IndexOf ( '프로그램 / JSON').! == - 1 ) { 
                    JSON.parse (본체) 
                } 다른  경우(req.headers [ '콘텐츠 형']를 같이 IndexOf ( '파일 응용 프로그램 / octet-stream을') == -.!. 1 ) {
                     // RWA 요청 본문 형식 구문 분석 
                } 다른  IF (req.headers [ '콘텐츠 형'] .indexOf ( '텍스트 / 일반') == -! 1 ) {
                     // 텍스트 요청 본문 텍스트 분석 
                } 그렇지 않으면  IF (req.headers [ '콘텐츠 형']를 같이 IndexOf ( '파일을 application / x-www-형상 -. !) 'urlencoded를 == -. 1 ) {
                     // urlencoded를 포맷 요청 본문의 구문 분석 
                } 다른 {
                 // 다른 형식의 구문 분석 
                } 
            }) 
        } 그렇지 않으면 { 
            RES.종료('기타 모드' ) 
        } 
    }). (가) 듣기 ( 3000)

 

 

익스프레스 기본 프레임 바디 파서는 미들웨어로 요청 본문을 구문 분석, app.js 파일에있는 익스프레스 프로젝트의 생성 후 발견 될 수있다

/ * 引入依赖项* / 
VAR 급행 = ( '표현'요구 );
// ... 
var에 bodyParser의 =은 ( '몸 파서'을 필요로 ); 

VAR 노선의 =은 ( './ 경로 / 인덱스'를 필요로 ); 
var에 사용자 =은 ( './ 경로 / 사용자가'필요 ); 

VAR 응용 프로그램 = 특급 (); 

// ... 

// 解析응용 프로그램 / json으로 
app.use (bodyParser.json ()); 
// 解析애플리케이션 / x-www-form-urlencoded를 
app.use (bodyParser.urlencoded ());

 

이것은 응용 프로그램 수준, 그 요청을 처리하는 체내 파서 모듈의 도입을 허용한다. 위의 코드에서, 상기 처리 모듈은 애플리케이션 / 애플리케이션 / JSON 요청 본문 두 가지 형식을 x-www-form-urlencoded로.

이 중간 후에는 모든 라우팅 프로세서 req.body에 요청 매개 변수에 액세스 할 수 있습니다

실제 프로젝트에서 다른 경로는 다른 유형의 콘텐츠를 사용하는 사용자에게 요구할 수도 , 본체 파서는 같은 이의 분석 개별 라우팅 추가 요구를 지원 표현할

(가) 필요 = VAR ( '익스프레스'익스프레스 ) 
var에 bodyParser = 요구] ( 'bodyParser' ); 

var에 응용 = 새로운 새로운 Express를 (); 

// 구문 분석 응용 프로그램 / JSON 만들기 
var에 jsonParser = bodyParser.json을 (); 

// 응용 프로그램을 만듭니다 / x-www-form-urlencoded를 
var에 urlencodedParser = bodyParser.urlencoded ({확장 : 거짓 }); 

// URL로 인코딩 된 POST / 로그인 요청 바디 받기 
app.post ( '/ 로그인' , urlencodedParser, 기능 (REQ, RES ) {
     경우 (req.body)! 돌아 res.sendStatus (400 ) 
    res.send ( + '구입, 사용할 수를' req.body.username); 
}) 

//POST / API / 사용자가 JSON 인코딩 요청 본문의 인수 
app.post를 ( '/ API / 사용자' , jsonParser, 기능 (REQ, RES) {
     IF (req.body)! 돌아 res.sendStatus (400 );
     // 사용자 만들기 에서 req.body 
)}

 

 

 

<< 요청 유형 >> 지정
바디 파서 또는 분석적 요청 본문의 내용 유형의 특정 유형을 의미 하나의 규격을 지원 하는 타이밍은 입력 파라미터를 추가함으로써 변형 될 수있는 분석 방법으로 해석 컨텐츠 유형을 지정한다.
예를 들어, 텍스트 / 일반 콘텐츠 형식에 대한 JSON 구문 분석을 사용하여

app.use (bodyParser.json ({유형 : '텍스트 / 일반'}))

 

이 옵션은 더 비표준 요청 헤더에 해결

// JSON 사용자 정의 구문 분석 
app.use을 (bodyParser.json ({유형 '/ JSON * + 파일 응용 프로그램' )}) 

// 파싱 사용자 정의 버퍼 
'파일 응용 프로그램 / VND : app.use (bodyParser.raw ({유형 형 .custom가 ' })) 

// HTML 문자열 처리와 같은 요청 본문 
app.use을 (bodyParser.text ({유형 :' text / html과 '}))

 

 

<< 본체 파서 모듈 API >>

몸이 요청을 해결할 때 시간이 비어있을 때, 분석 값은 {}, 빈 제목을 req.body 속성을 배치
 - --- bodyParser.json () 구문 분석 JSON 형식
 --- bodyParser.raw ( ) - 바이너리 형식을 구문 분석
 --- bodyParser.text () - 텍스트 형식을 구문 분석
 --- bodyParser.urlencoded를 () - 텍스트 형식을 구문 분석

 





출처 : HTTPS : //www.jianshu.com/p/cd3de110b4b6

추천

출처www.cnblogs.com/JonaLin/p/11310468.html