我正在使用Nuxtjs/Vuejs. 在其中,我使用Axios將一些資料發送到我的Java Spring-boot service.
我想在我的Axios Post請求中發送多個引數并使用Java Spring-boot. 我能夠使其適用于單個引數,但是當我傳遞多個引數時,我會Required request body is missing在Java service.
我的Axios Post要求:
export const actions = {
testdataGenerator ({ commit, state, dispatch }) {
const headers = { 'Content-Type': 'application/json' }
this.$axios.post('/generateTestData', { params: { inputTemplate: state.testDataInput, identifiersTemplate: state.identifiersData } }, { headers })
.then((response) => {
console.log(response)
})
.catch((error) => {
console.log(error)
})
}
}
Java Spring Boot service:
@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/api")
public class TestDataGeneratorController {
@PostMapping(value = "/generateTestData", consumes = "application/json ", produces = "text/plain")
public String generateTestData(@RequestBody String inputTemplate, @RequestBody String identifiersTemplate) throws TestDataGeneratorException {
try {
System.out.println(inputTemplate);
System.out.println(identifiersTemplate);
return null;
} catch (Exception exception) {
throw new TestDataGeneratorException(exception.getMessage());
}
}
}
有人可以告訴我我需要改變什么Axios/Java service才能完成這項POST request作業嗎?
uj5u.com熱心網友回復:
您正在以正確的方式使用 axios 將資料發送到 spring boot 控制器,問題RequestBody在于您的方法中的多個注釋:
public String generateTestData(@RequestBody String inputTemplate,
@RequestBody String identifiersTemplate) throws TestDataGeneratorException
如果請求正文中包含多個引數,解決方法之一是轉換為 a Map<String, Object>,然后在正文中提取引數:
public String generateTestData(@RequestBody Map<String, Object> map)
throws TestDataGeneratorException {
//your map will be {params={inputTemplate=..., identifiersTemplate=...}}
}
訊息Required request body is missing可能是由于多個RequestBody注釋,并且與第二個注釋的存在有關,根據訊息收到一個空的正文,但我不確定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/404721.html
標籤:
