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

无法映射/获取Microprofile Rest客户端中422错误代码上的响应实体

鲜于意
2023-03-14

我有一个API,当我通过邮递员调用它时,它会对以下情况做出以下回应:

案例1:状态代码:200

{"success": "student record is present",
  "error": null}
{"success": null,
  "error": "studentname should not contain numerics"}
public class StudentResponse{

    private String success;

    private String error;

    public String getSuccess() {
        return success;
    }

    public void setSuccess(String success) {
        this.success = success;
    }

    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }

    @Override
    public String toString() {
        return "StudentResponse [success=" + success + ", error=" + error + "]";
    }

}
@RegisterRestClient(configKey = "student-client-api")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface StudentService {

    @POST
    @Path("/checkStudent")
    StudentResponse checkStudent(@RequestBody StudentCheck studentCheck);
}

最后,我通过应用程序对它进行了测试,对于案例1,正如预期的那样,收到了状态代码为200的响应正文。但是对于第二种情况,由于状态代码是422,异常被抛出并得到处理,但是在异常对象中我们有响应对象,在它里面我们有响应实体。此响应实体为null,甚至studentResponse也为null。我想在422状态代码和microprofile rest客户机的情况下获得错误消息(json响应)。有什么方法/建议来实现这一点?

共有1个答案

席乐童
2023-03-14

不幸的是,Microprofile客户机不支持这一点。不过,这听起来像是一个有用的特性,所以您介意在Quarkus问题跟踪器中打开一个问题吗?

 类似资料:
  • 我正在使用JMeter执行负载测试,用户应该执行启动-登录- clk仪表板页面- clk登录页面(登录后出现的页面,即主页),其中clk仪表板和clk登录页面重复操作5次。 直到30个用户,当我增加用户负载时,我没有收到任何错误,我开始收到错误,因为 响应代码:非HTTP响应代码:org.apache.HTTP.conn.HttpHostConnectException响应消息:非HTTP回应消息

  • 我正在使用Spring Data Elasticsearch来获取一些聚合,并尝试使用ReactiveElasticsearchClient。我从Elasticsearch得到一个500错误,但我不知道如何获得响应的主体,以便调试请求的错误。以下是我目前掌握的情况: 为组织启用跟踪日志记录。springframework。数据elasticsearch。客户WIRE,将记录请求正文,但响应的日志行

  • 只是想知道有没有办法得到spring Web-Flux的web客户端的响应时间?

  • 我没有从改造422代码中获得完整的响应字符串作为JSON 这是我在错误体中得到的 谢谢 更新 我已经成功地将我对错误体的响应转换为Json UpdatePasswordError.kt )

  • 我读了很多关于正确的超文本传输协议状态代码返回客户端请求错误的帖子和文章。其他人建议使用400,因为它在RFC 7231中被重新定义了,尽管我不确定给出的例子是否涵盖了我脑海中所有的客户端错误,因为这些例子是语法性的。 400(错误请求)状态代码表示服务器无法或将不会处理请求,原因是被认为是客户端错误(例如,格式错误的请求语法、无效的请求 消息帧或欺骗性请求路由)。 我确实在rfc 7231的附录

  • 不确定发生了什么,但我不知道我的反应在哪里被劫持了。