Почему Spring boot не принимает мои POST-запросы Ax ios? - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь отправить запрос 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 не работает?

1 Ответ

0 голосов
/ 06 марта 2020

Так что я полностью забыл проверить CORS на стороне API. После разрешения всех CORS на моем методе контроллера это теперь работает. Doh!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...