Я пытаюсь отправить запрос POST с телом JSON, используя Ax ios, в загрузочное приложение Spring. Однако загрузочное приложение Spring возвращает Required request body is missing:
.
Когда я отправляю тот же запрос в Postman, он работает как положено.
У меня очень простой контроллер:
@RestController
@RequestMapping(value = "/deployments")
public class DeploymentController {
@PostMapping
public ResponseEntity<Deployment> createDeployment(@RequestBody Deployment deployment) {
//DoStuff
}
}
Тело, которое я публикую, одинаково в обоих случаях:
{
"name": "testdeployment2",
"domainName": "domain.local",
"repository": "KB",
"branch": "master",
"servicepack": "6.5.1"
}
Когда я отправляю запрос почтальону, запрос выглядит так:
{
"args": {},
"data": "{\"name\":\"testdeployment2\",\"domainName\":\"domain.local\",\"repository\":\"KB\",\"branch\":\"master\",\"servicepack\":\"6.5.1\"}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Cache-Control": "no-cache",
"Content-Length": "129",
"Content-Type": "application/json",
"Host": "httpbin.org",
"Postman-Token": "238d83b0-1f14-4828-abf5-45978a80c008",
"User-Agent": "PostmanRuntime/7.22.0",
"X-Amzn-Trace-Id": "Root=1-5e6221c7-9be7dcc1163e105cd3495bf8"
},
"json": {
"branch": "master",
"domainName": "domain.local",
"name": "testdeployment2",
"repository": "KB",
"servicepack": "6.5.1"
},
"origin": "IP",
"url": "http://httpbin.org/post"
}
Ax ios код :
const url = 'http://httpbin.org/post';
const options = {
headers: {
'Content-Type' : 'application/json'
}
};
this.$http.post(
url,
this.form,
options
).then(result => {
this.result = result;
}).catch(error => {
alert(error);
});
А у Axe ios запрос выглядит так:
{
"args": {},
"data": "{\"name\":\"testdeployment2\",\"domainName\":\"domain.local\",\"repository\":\"KB\",\"branch\":\"master\",\"servicepack\":\"6.5.1\"}",
"files": {},
"form": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US,en;q=0.9,nl;q=0.8",
"Content-Length": "129",
"Content-Type": "application/json",
"Dnt": "1",
"Host": "httpbin.org",
"Origin": "http://localhost:8080",
"Referer": "http://localhost:8080/",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-5e6223c7-35d5028ab672229267f65e9c"
},
"json": {
"branch": "master",
"domainName": "domain.local",
"name": "testdeployment2",
"repository": "KB",
"servicepack": "6.5.1"
},
"origin": "IP",
"url": "http://httpbin.org/post"
}
Есть что-то, чего я здесь не вижу? Почему Почтальон работает, а Топор ios не работает?