HTTP 요청에 대한 요청 페이로드, 쿼리 문자열 매개 변수 및 양식 데이터의 차이점

서버로 데이터를 전송할 때 GET 및 POST 메소드는 일반적으로 매개 변수 제출에 사용되며 매개 변수 제출 방법은 일반적으로 서버가 데이터를 수신하는 방법에 따라 다릅니다.

1. 페이로드 요청

POST 요청이 시작될 때 콘텐츠 유형이 application / json 인 경우 매개 변수는 요청 페이로드 (분명히 데이터 형식은 JSON) 형식으로 전달되며 요청 URL에 명시 적으로 표시되지 않습니다.
헤더 :
여기에 사진 설명 삽입수신 매개 변수 :
여기에 사진 설명 삽입

일반적인 문제 :

vue axois 요청 인터페이스는 기본적으로 Request Payload로 구문 분석됩니다.

양식 데이터를 통해 데이터를 전달하려면 원시 메소드 인 formData ()를 사용하여 데이터를 어셈블하고 컨텐츠 유형을 multipart / form-data로 설정해야합니다.

해방 계획 :
'Content-Type': 'applicacaton / json'을 'Content-Type': 'application / x-www-form-urlencoded'로 변경하면
방법은 다음과 같습니다.

// 通用公用方法
const req = (method, url, params) => {  
  return axios({   
     method: method,  
     url: url,      
    headers: { 
    'Content-Type': 'application/x-www-form-urlencoded',     
  },       
   data: params,     
  traditional: true,    
 transformRequest: [  
 function(data) {     
       let ret = ''              
       for (let it in data) {     
         ret +=                    
        encodeURIComponent(it) +            
          '=' +                      
         encodeURIComponent(data[it]) +        
         '&' 
         }               
          return ret          
     }        
   ]   
  }).then(res => res.data);};

요청 본문은 Request Payload이고 요청 헤더 Content-Type : application / json입니다. 이런 방식으로 요청의 경우 @RequestParam은 백그라운드에서 매개 변수를 수신 할 수 없습니다. @RequestBody 만 사용하거나 Spring의 HandlerMethodArgumentResolver  인터페이스를 구현 하고 매개 변수를 사용자 정의 할 수 있습니다. 파서는 매개 변수를 개별적으로 수신합니다.

요청 페이로드의 요청 본문 형식은 json 형식의 문자열입니다.
{ "loginName": "admin", "password": "123456"}

2. 양식 데이터

POST 요청이 시작될 때 content-type이 지정되지 않은 경우 기본 content-type은 application / x-www-form-urlencoded입니다. 즉, 매개 변수는 양식 데이터의 형식으로 전달되며 요청 URL에 명시 적으로 나타나지 않습니다.
여기에 사진 설명 삽입

양식 데이터 요청 :
여기에 사진 설명 쓰기

양식 데이터의 요청 본문 형식은 key = value & key1 = value2입니다.
loginName = admin & password = 123456

백그라운드 처리 :
Request Payload 요청의 경우 요청 본문을 해당 Bean으로 구문 분석하기 위해 @RequestBody를 추가해야하며 요청 본문 내용은 request.getReader ()를 통해서만 얻을 수 있습니다.
여기에 사진 설명 쓰기

Form Data 요청의 경우 주석이 필요하지 않습니다. springmvc는 자동으로 MessageConverter를 사용하여 요청 매개 변수를 해당 Bean으로 구문 분석하고 request.getParameter (...)를 통해 요청 매개 변수를 얻거나 @RequestParam을 통해 수신 할 수 있습니다.

3. 쿼리 문자열 매개 변수

쿼리 문자열 매개 변수 GET 요청이 시작되면 매개 변수가 url 문자열 형식으로 전달됩니다. 즉, &를 구분 기호로 사용하는 요청 매개 변수입니까? 다음 http 요청 메시지 헤더 :
헤더 :
여기에 사진 설명 삽입
수신 매개 변수 :

여기에 사진 설명 삽입

 

 

 

 

 

추천

출처blog.csdn.net/AN0692/article/details/109675466