Method is not being detected when using the Custom class as input parameter type for the REST API service(将Custom类用作REST API服务的输入参数类型时,未检测到方法)
问题描述
我正在使用Vuejs/Nuxtjs
开发一个Web应用程序,该应用程序使用Axios
调用我的Java服务,但在调用过程中收到错误:
POST http://localhost:9001/generate 500 (Internal Server Error)
我收到这个错误是因为我的Java服务类型接受Custom数据类型InputParameter
的输入参数。如果我更改为String
,则它工作正常。因此,我想知道我应该对前端调用或Java服务进行哪些更改,以便它可以与InputParameter type
一起工作。
以下是我对Java服务进行的Vuejs调用:
const headers = { 'Content-Type': 'application/json' }
this.$axios.post('/generate', { ...JSON.parse(inputParameter) }, { headers })
.then((response) => {
console.log(JSON.stringify(response.data))
})
.catch((error) => {
console.log(error)
})
以下是我的Java服务方法,它不使用自定义数据类型InputParameter
,调用未检测到该方法,并且执行不在该方法内:
@Path("/generate")
@Produces(MediaType.APPLICATION_JSON)
@APIResponses(value = {
@APIResponse(responseCode = "200", description = "returns list of JSON Objects"),
@APIResponse(responseCode = "500", description = "An internal Server Error occurred")
})
public String generate(final InputParameter inputParameter){
System.out.println(inputTemplate.toString());
return null;
}
如果我将上面的Java服务方法输入参数数据类型更改为字符串,则检测到该方法并打印输入:
@Path("/generate")
@Produces(MediaType.APPLICATION_JSON)
@APIResponses(value = {
@APIResponse(responseCode = "200", description = "returns list of JSON Objects"),
@APIResponse(responseCode = "500", description = "An internal Server Error occurred")
})
public String generate(final String inputParameter){
System.out.println(inputTemplate);
return null;
}
我不明白这里出了什么问题。有人能帮帮忙吗?
我尝试过的内容:
- 添加
@Consumes(MediaType.APPLICATION_JSON)
。 - 将方法更改为
public String generate(@RequestBody final InputParameter inputParameter)
我的InputParameter
类如下所示:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class InputParameter {
private List<String> names;
private List<String> jobs;
}
我传递给Java服务的InputParameter如下所示:
{
"names":[
"Batman",
"Superman",
"Ironman"
],
"jobs":[
"Fighting",
"Fyling",
"Teching"
]
}
推荐答案
发布答案对将来的其他人很有帮助。我尝试了一些方法,但都没有奏效,最后以下几个方法对我起作用了:
@POST
@Path("/generate")
@Produces(MediaType.APPLICATION_JSON)
@APIResponses(value = {
@APIResponse(responseCode = "200", description = "returns list of JSON Objects"),
@APIResponse(responseCode = "500", description = "An internal Server Error occurred")
})
public String generate(final InputParameter inputParameter){
System.out.println(inputTemplate.toString());
return null;
}
我还必须更改与Jackson ObjectMapper
相关的一个小设置,这在这里是不相关的,因为它是我在另一个类中遗漏的特定于项目的设置。也许这就是我面临的问题。现在一切正常。
这篇关于将Custom类用作REST API服务的输入参数类型时,未检测到方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!