春季对列表或地图的响应正文

时间:2019-06-10 11:03:31

标签: java spring okhttp3

我正在开发一个Web应用程序,该应用程序使用服务器上的API REST并将数据显示在前端。 我不确定在Spring如何进行通话以及如何管理响应。

我有一个Controller类,该类映射到POST请求,这是一个按钮的操作,用于显示服务器上的信息,该按钮使我返回一个REST API调用。 这是我正在谈论的方法。我想要的只是在表中显示数据(在这些情况下为类别)一样简单,然后将其传递给视图。但是我不能(不知道)如何将我所得到的转换成列表或地图之类的东西。

    @PostMapping(value = "/showAreas")
public String getAllAreas(Model model) throws IOException {

    TokenRepositoryImpl token = new TokenRepositoryImpl();
    tokenId = token.getToken();

    OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder().url("http://XXX.XX.XX.XX:8888/api/1.0/test/project/categories").get()
            .addHeader("Authorization", "Bearer " + tokenId.getAccess_token()).build();

    Response response = client.newCall(request).execute();

    System.out.println(response.body().string());

    //This is what I need: List<JSONObject> areas = new ArrayList<JSONObject>();

    return "areasView";

}

我进入系统的结果是:     [{“ cat_uid”:“ 8650262225c0e95e609fa16018826000”,“ cat_name”:“ X XXX”,“ cat_total_processes”:X},{“ cat_uid”:“ 2 ...]

2 个答案:

答案 0 :(得分:1)

List or Map添加到传递参数的Model对象中,然后可以再次使用Model对象在前端访问它。例如:

Request request = new Request.Builder().url("http://XXX.XX.XX.XX:8888/api/1.0/test/project/categories").get()
            .addHeader("Authorization", "Bearer " + tokenId.getAccess_token()).build();

Response response = client.newCall(request).execute();
model.setAttribute("response",response.body());

答案 1 :(得分:0)

您可以在春季使用ResponseEntity

@PostMapping(value = "/showAreas")
public ResponseEntity getAllAreas(Model model) throws IOException {

    TokenRepositoryImpl token = new TokenRepositoryImpl();
    tokenId = token.getToken();

    OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder().url("http://XXX.XX.XX.XX:8888/api/1.0/test/project/categories").get()
            .addHeader("Authorization", "Bearer " + tokenId.getAccess_token()).build();

    Response response = client.newCall(request).execute();

    return ResponseEntity.ok(response.body());

}