当前位置: 首页 > 知识库问答 >
问题:

Jersey服务器,RESTAPI:如何从响应体中删除代码和类型?

王高邈
2023-03-14

我正试图使用Jax rs从swagger生成的基本代码创建一个RESTAPI。

这些规范用于特定请求的示例:代码: 200描述:登录模式的用户令牌:字符串

我的问题是生成的代码使用类:javax.ws.rs.core.响应,不应该根据留档进行扩展。

我使用这种代码来构建响应:

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

生成的响应如下所示:

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

当我只想在身体里有:“uHN2cE7REfZz1pD17ITa”。用球衣可以吗?或者这种格式是jax-rs规范的一部分?

非常感谢。

共有2个答案

阎星河
2023-03-14

JAX-RS不需要为模式下的文本、json、xml或html提供特定格式的请求或响应。但它们都必须根据各自的规范进行良好的格式化。

你可以像这样在泽西发送短信回复

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

我是个新来的自吹自擂的人,所以我不知道这个问题的答案是否可以改变。但泽西方面并没有任何限制

赵光赫
2023-03-14

Swagger的ApiResponseMessage没有扩展JAX-RS的Response。检查代码,您将看到ApiResponseMessage只是一个POJO。也就是说,您在问题中发布的代码很好。

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

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

下面给你同样的结果:

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

由于您的资源方法将只生成一段文本(除非该段文本用引号括起来,否则不是有效的JSON),因此最适合响应的媒体类型是text/plain。可以通过使用@products(MediaType.TEXT\u 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();  
}

或者,您也可以使方法仅返回一个字符串

@GET
@Produces(MediaType.TEXT_PLAIN)
public String getToken() {
    String apiToken = ...
    return apiToken;  
}
 类似资料:
  • 我在spring boot中使用rest模板调用一些restendpoint,如下所示: 然后我从响应实体中读取所有标题,如下所示: 但是HttpHeaders包含这么多的头,从中我只想读取自定义头,我们不知道自定义头的名称,基本上我只想删除所有标准HTTP头并获取所有剩余的头。 我们如何删除所有标准HTTP标头?

  • 在过去的几天里,我一直在使用JProfiler来分析本地运行的Websphere7服务器(从RAD8中)。我使用了JProfiler的服务器集成功能来连接到was实例。 现在,我想从WAS服务器实例中删除评测——无论何时启动服务器,它都会显示为“评测”——即使JProfiler没有运行。如何将JProfiler从服务器上“取下”?

  • 我想从(RubyonRails)响应中删除一些头文件 报头响应: HTTP/1.1 200正常 日期:2013年6月6日星期四14:42:26 GMT 连接:保持活动状态 X运行时间:0.01900 内容类型:文本/纯文本;字符集=utf-8 缓存控制:专用,最大年龄=0,必须重新验证 服务器:WEBrick/1.3.1(Ruby/1.8.7/2012-10-12) 内容长度:281 Etag:“

  • 我正在使用WCF和实体框架处理一个web服务,我想知道如何查看HTTP状态代码或将其返回给调用客户端。 我拥有的代码如下: 无论是使用这个JSON还是在其他地方,我都希望客户机知道调用是否通过适当的HTTP代码成功或失败。任何关于如何做到这一点的提示或建议都将不胜感激。

  • 我在一个REST服务中工作,该服务是由Spring Boot的,到目前为止,它是使用springfox-swagger2:2.7.0(首先实现)记录的。我添加的最后一个操作如下: 现在,问题是无论如何,生成的斯瓦格定义最终看起来像这样: 如果这个操作不返回任何内容,我理解204响应应该没有字段(像另一个字段一样)。 我尝试在@ApiParam注释中指定(如其他线程中建议的),但没有任何乐趣(因为它

  • 我正在尝试从数据库中删除记录,以及从服务器中删除该记录的上载图像。我在控制器中有这个功能。 取消链接(C:\xampp\htdocs\larapro\public\newuploads\ 如果我使用 它显示: 解除关联(C: mpp\htdocs\larapro\Public\ewaddads{1470667358.png}):无效参数 我只是想知道为什么链接中的x和n丢失了。