0

以前に使用したことがなく@POST、構文とテスト方法がわかりません。これが私が今持っているものです:

@GET
@Path("classroomAssignmentId/{classroomAssignmentId}/classroomId/{classroomId}/assignmentName/{assignmentName}/assignmentDesc/{assignmentDesc}/assignmentDueDt/{assignmentDueDt}/assignmentDocument/{assignmentDocument}/assignmentStatusId/{assignmentStatusId}/updatedBy/{updatedBy}")
@Produces(MediaType.APPLICATION_JSON)


public ClassroomAssignment getCandidatesAsJson( @PathParam("classroomAssignmentId") int classroomAssignmentId
                        ,@PathParam("classroomId") int classroomId
                        ,@PathParam("assignmentName") String assignmentName
                        ,@PathParam("assignmentDesc") String assignmentDesc
                        ,@PathParam("assignmentDueDt") String assignmentDueDt
                        ,@PathParam("assignmentDocument") String assignmentDocument
                        ,@PathParam("assignmentStatusId") int assignmentStatusId
                        ,@PathParam("assignmentTypeId") int assignmentTypeId
                        ,@PathParam("updatedBy") String updatedBy)

を に変更し@GETたい@POST。構文と、ブラウザーを介して WS 呼び出しをテストする方法についてのヘルプが必要です。

4

1 に答える 1

2

ここには 2 つの問題があります。

まず、パラメーターを別の方法で表現したいだけでは、呼び出しのセマンティクスを変更するには不十分です。POST は GET とは根本的に異なり、REST では両方のセマンティクスが非常に明確に定義されています。都合だけで切り替えてはいけません。

しかし第二に、理論が衒学的であり、これを実際に行う方法だけに関心がある場合は、次のようなものを使用します。

@POST
@Path("/classroom-assignment)
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public ClassroomAssignment getCandidatesAsJson(CandidateObject myObject) {
...
}

次に、JAX-RS プロバイダー (RESTEasy、Spring MVC、Restlet など) が POJO への JSON の自動デシリアライズ (通常は Jackson を使用) を実行する必要があります。CandidateObjectPOJO には、元のクエリ文字列のフィールドにマッピングされた getter と setter があります。あなたのGETの。

少なくともこれがデフォルトのシリアル化であり、これで十分かつ簡単です。

ClassroomAssignmentPOJOもあり、JSON シリアライザー (通常は Jackson) がその POJO を JSON に変換します。

しかし、最終的には、以前に GET が機能していた場合は、おそらく GET のままにしておく必要があります。設計と GET 呼び出しの方法を再考してください。

于 2013-11-03T21:39:14.817 に答える