5

現在、CXFを使用してRESTFul Web サービスを公開しています。メソッドはこんな感じ。

@GET
@Path("/getProfile/{memberno}/{userid}/{channelid}")
@Consumes("application/xml")
public MaintainCustomerProductResponse getUserDetails(
        @PathParam("memberno") String membernumber,
        @PathParam("userid") String userid,
        @PathParam("channelid") String channelid){
//DO Some Logic here.
}

これには、次の URL からアクセスできます。有効なデータを送信すると、応答が返されます。

http://server.com:8080/UserService/getProfile/{memberno}/{userid}/{channelid}

質問: に null 値を渡すにはどうすればよいuseridですか?

私が単純に無視すると{userId}、リクエストはサーバー側の Web サービスにヒットしません。

http://server.com:8080/UserService/getProfile/1001//1

注:私はSOAPUiテストに使用していますが、userId値を指定せずに次の応答が表示されSOAPUI、リクエストがサーバーにヒットしません。

SOAPUI レスポンス

<data contentType="null" contentLength="0"><![CDATA[]]></data>
4

6 に答える 6

7

変数のデフォルトの一致は[^/]+?(少なくとも 1 文字) であり、手動で一致を設定でき、[^/]*?空の文字列にも一致する必要があります。

次の形式を userid 変数に追加するだけです。

@Path("/getProfile/{memberno}/{userid: [^/]*?}/{channelid}")
于 2012-12-21T12:12:17.960 に答える
2

@Path("/getProfile/{memberno}/{userid}/{channelid}") @Path("/getProfile/{memberno}/{userid = default}/{channelid}")user id に null 値を受け入れるように変更してください。Uri テンプレートを使用して、オプションのパラメーターの既定値を指定できます。参照してください。

http://msdn.microsoft.com/en-us/library/bb675245.aspx

于 2013-10-09T05:50:00.233 に答える
0

URL エンコーディング、 pass を使用できます%00これを参照してください。

例:http://server.com:8080/UserService/getProfile/1001/%00/1

于 2019-01-10T20:22:42.410 に答える
0

ワークアラウンドで解決しました。2 つのパラメーターのみを取る別のメソッドを作成しました。リクエスト URL に基づいて、異なるメソッドが呼び出されるようになりました

于 2012-12-31T10:23:58.710 に答える
0
@GET
@Path("qwer/{z}&{x:.*?}&{c}")
@Produces(MediaType.TEXT_PLAIN)
public String withNullableX(
        @PathParam("z") Integer z,
        @PathParam("x") Integer x,
        @PathParam("c") Integer c
) {
    return z + "" + x + "" + c;
}


http://localhost:8080/asdf/qwer/1&&3で呼び出すと、次の
ように表示されます。
1null3

于 2018-08-15T12:23:12.143 に答える