簡體   English   中英

Jersey服務器,rest api:如何從響應正文中刪除代碼和類型?

[英]Jersey server, rest api : How to remove the code and type from the response body?

我正在嘗試根據swagger生成的基本代碼使用Jax-rs Jersey創建Rest Api。

規范是針對特定請求的示例:代碼:200說明:登錄用戶令牌架構:字符串

我的問題是,生成的代碼使用了:javax.ws.rs.core.Response類,該類不應根據文檔進行擴展。

我正在使用這種代碼來構建響應:

return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK,apiToken)).build(); 

生成的響應如下所示:

{"code":4,"type":"ok","message":"uHN2cE7REfZz1pD17ITa"}

當我只想在體內擁有:“ uHN2cE7REfZz1pD17ITa”時。 使用Jersey可以嗎? 還是這種格式是jax-rs規范的一部分?

謝謝。

Swagger的ApiResponseMessage不會擴展JAX-RS的Response 檢查代碼 ,您將看到ApiResponseMessage只是一個POJO。 也就是說,您在問題中發布的代碼段就可以了。

如果只需要令牌,則可以使用:

return Response.ok(apiToken).build();

以下給出了相同的結果:

return Response.ok().entity(apiToken).build();

由於您的資源方法將只生成一段文本(除非將一段文本用引號引起來,否則它不是有效的JSON),因此,最適合響應的媒體類型將是text/plain 可以通過使用@Produces(MediaType.TEXT_PLAIN)注釋資源方法或在響應中設置媒體類型來實現,如下所示:

@GET
@Produces(MediaType.TEXT_PLAIN)
public Response getToken() {
    String apiToken = ...
    return Response.ok(apiToken).build();  
}
@GET
public Response getToken() {
    String apiToken = ...
    return Response.ok(apiToken, MediaType.TEXT_PLAIN).build();  
}

另外,您也可以使您的方法僅返回String

@GET
@Produces(MediaType.TEXT_PLAIN)
public String getToken() {
    String apiToken = ...
    return apiToken;  
}

對於文本,json,xml或html模式而言,JAX-RS不需要特定格式的請求或響應。 但是它們都必須根據其規范進行格式化。

您可以像這樣在運動衫中發送文本回復

return Response.ok().entity("uHN2cE7REfZz1pD17ITa").build();

我是個新手,我不知所措,所以我不知道所討論的響應是否可以更改。 但是從球衣方面沒有限制

暫無
暫無

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

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