簡體   English   中英

如何模仿網址類型

[英]how to mime type of the url

我正在使用cxf作為Web服務。它支持所請求數據的xml和json格式輸出。我想知道如果我的代碼中發生了某些異常,那么我想以xml或json格式返回給他錯誤代碼。但我不知道何時提供json和xml,這取決於用戶要求的所請求的url。

@Path(“ / reports / ad-view / loginId / {loginId} / publisher /”)

PublisherReports getPublisherReportsAdView(

        @PathParam("loginId") String loginId,
        @QueryParam("fromDate") String fromDate,
        @QueryParam("toDate") String toDate,
        @QueryParam("filterValue") String filterValue);

如果您是想檢測用於發出請求的mime類型,則可以使用@Consumes批注來指示哪種方法處理哪種類型的請求。 所以你可以這樣寫:

// Called when an XML request is made
@Path("/reports/ad-view/loginId/{loginId}/publisher/")
@Consumes("application/xml")
PublisherReports getPublisherReportsAdViewXml(...

和:

// Called when a JSON request is made
@Path("/reports/ad-view/loginId/{loginId}/publisher/")
@Consumes("application/json")
PublisherReports getPublisherReportsAdViewJson(...

然后,讓getPublisherReportsAdView()方法的每個變體都調用一個通用方法來執行實際的處理邏輯,但是仍然根據要調用的方法以不同的方式處理異常。

一種不需要其他方法的替代方法是添加一個帶有@HeaderParam批注的參數,並使用該參數保存“ Content-Type”請求標頭的值。

例如:

PublisherReports getPublisherReportsAdView(
                @PathParam("loginId") String loginId,
                @QueryParam("fromDate") String fromDate,
                @QueryParam("toDate") String toDate,
                @QueryParam("filterValue") String filterValue,
                @HeaderParam("Content-Type") String contentType)
{
  ...

contentType的值也可能包含字符集信息,例如:application / json;。 charset = UTF-8,因此在計算請求是否包含JSON或XML時需要忽略它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM