Quarkus RestClient 返回空模型(JAVA)

Quarkus RestClient returning empty model (JAVA)

在我的应用程序中,我有 2 个项目(服务),我想从一个服务到另一个服务进行 API 调用。 所以我遵循了 Quarkus Restclient 的 Quarkus 教程。但是当我打电话时,restclient returns 是默认模型。

这是我的回复class:

public class Response {

private int status;
private String statusVerbose;
private Object data;

//Getters
public int getStatus() {return this.status;}
public String getStatusVerbose() {return this.statusVerbose;}
public Object getData() {return this.data;}

public Response(){
    this.SetStatusCode(404);
    this.data = new JSONObject().put("error", "Not Found");
}

public Response(int statusCode){
    this.SetStatusCode(statusCode);
}
public Response(int status, Object data){
    this.SetStatusCode(status);
    this.SetData(data);
}
public Response(int status, Object data, String statusVerbose){
    this.SetStatusCode(status);
    this.SetData(data);
    this.SetStatusVerbose(statusVerbose);
}

public Response(int status, String statusVerbose){
    this.SetStatusCode(status);
    this.SetStatusVerbose(statusVerbose);
}

public void SetStatusCode(int status) {
    this.status = status;
    switch(status){
        case 200:
            statusVerbose = "OK";
            break;
        case 400:
            statusVerbose = "BAD_REQUEST";
            break;
        case 404:
            statusVerbose = "NOT_FOUND";
            break;
        case 500:
            statusVerbose = "INTERNAL_SERVER_ERROR";
            break;
        case 401:
            statusVerbose = "NOT_AUTHORIZED";
            break;
        case 403:
            statusVerbose = "NOT_ALLOWED";
            break;
    }
}

public void SetStatusVerbose(String verbose){
    statusVerbose = verbose;
}

public void SetData(Object data){
    this.data = data;
}
}

这是返回的 Response 模型,我也让 RestClient 接收这个模型。 但是 RestClient 给了我一个带有默认构造函数的 Response 对象。取而代之的是具体数据。

public Response IsUserASupermarket(){
        Response r = new Response(200);
        JSONObject obj = new JSONObject();
        obj.put("isSupermarket", true);
        r.SetData(obj);
        System.out.println(r.getData());
        return r;
    }

我接到这个电话的接口:

@RegisterRestClient
public interface PortalAccountClient {

    @GET
    @Path("/portal/isSupermarket")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    Response IsUserASupermarket();
}

所以我得到了一个默认构造函数 Response obj。

亲切的问候, 巴特

我怀疑您的 REST 客户端界面实际上使用的是来自 JAX-RS.

Response class

您能否验证界面上的导入以确保它是您创建的 Response class 而不是来自 JAX-RS 的导入?

首先感谢@Ken 和@davide79 的帮助。我检查了一下这是一个菜鸟错误:(.

我的 Response 对象是正确的,但它们有错误的 getter 和 setter(错误的大小写),因此 RestClient 没有将它们检测为 getter 和 setter。

那么,Ken 和 Davide79 谢谢。

这个:

public Object GetData(){return this.data;}

必须是:

public Object getData(){return this.data}
  • 巴特