2

JSON ドキュメントをレスト サービス実装に送信する ajax リクエストがフロント エンドにあります。これは 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();
} 
4

1 に答える 1