我的前端有一个 ajax 请求,它将 JSON 文档发送到休息服务实现。它通过 Spring 连接起来,REST 服务中的 @GET 请求运行良好。
问题是,每当我尝试使用 @POST 方法时,它总是会引发 415 错误。
我已经尝试根据在线的各种指南来操纵我如何将其发回以及 post 方法中接受的变量类型,但我不确定下一步该往哪里看。
我已经仔细检查过我确实有数据被发送到 @POST 方法,但我觉得它根本没有解析 JSON 并抛出错误。
不幸的是,如果这是问题,我不知道如何解决。
下面我将所有内容简化为一个仍然会产生 415 错误的简单形式。
AJAX 请求:
function post_request(json_data) {
$j.ajax({
url : '../api/createDisplayGroup/postHtmlVar/' + containerID + '/' + containerType,
data: JSON.stringify(json_data),
dataType: 'json',
type : 'post'
}).done(function(response) {
run_update(response);
}).error(function(jQXHR, textStatus, errorThrown) {
alert('error getting request');
});
};
春天 XML:
<jaxrs:server id="displayGroupService" address="/createDisplayGroup">
<jaxrs:serviceBeans>
<ref bean="peopleFilterRestService" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jacksonJsonProvider"/>
<!-- disable XHR token check - allow external sources to call the service -->
<!--ref bean="securityInterceptor" /-->
</jaxrs:providers>
</jaxrs:server>
<bean id="peopleFilterRestService" class="mil.milsuite.community.rest.PeopleFilterRestService">
<property name="peopleFilterService" ref="peopleFilterService"/>
</bean>
<bean id="peopleFilterService" class="mil.milsuite.community.members.service.PeopleFilterServiceImpl">
<property name="communityManager" ref="communityManager"/>
<property name="socialGroupManager" ref="socialGroupManagerImpl"/>
</bean>
REST 实现(仅@POST):
@POST
@Path("/postHtmlVar/{containerId}/{contentType}")
@Consumes(MediaType.APPLICATION_JSON)
public List<TabDefinition> postHtml(@PathParam("containerId") String containerId, @PathParam("contentType") String contentType, List<TabDefinition> displayGroups) {
Long contId = Long.parseLong(containerId);
Long contType = Long.parseLong(contentType);
//return convertToResponse(peopleFilterService.getDisplayGroups(contId, contType));*/
return testDisplayGroup();
}