서버로 데이터를 전송할 때 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 요청 메시지 헤더 :
헤더 :
수신 매개 변수 :