山东大学项目实训纪实

Chat和前后端的通信

两个函数:

该代码解析了一个使用`@GetMapping`注解的方法`askquestion`,该方法接受一个`user_messages`参数作为请求参数,并返回一个`Result`对象。

首先,代码打印了`user_messages`参数的值。

然后,定义了一个`flaskUrl`变量,用于指定目标 Flask 服务器的 URL 地址。

接下来,创建了一个`requestBody`对象作为请求体,使用`HashMap`存储了一个键值对,键为`user_message`,值为`user_messages`参数的值。

然后,创建了一个`HttpHeaders`对象,并设置`Content-Type`为`MediaType.APPLICATION_JSON`,用于指定请求的内容类型为 JSON 格式。

接着,通过`URI`类创建了一个`uri`对象,用于表示目标 Flask 服务器的地址。

然后,创建了一个`HttpEntity`对象,用于封装请求实体,其中包含了请求体和请求头。

接下来,创建了一个`RestTemplate`对象,用于发送 HTTP 请求。

通过`RestTemplate`的`exchange`方法发送了一个`POST`请求,并将响应结果保存在`responseEntity`对象中。`exchange`方法的参数包括目标 URL 地址、请求方法、请求实体和响应类型。

接下来,打印了`responseEntity`的头部信息。

然后,通过判断`responseEntity`的状态码是否属于 2xx 成功状态码范围,如果是,则打印"Success",并将响应结果保存在`responce`变量中,最后返回一个成功的`Result`对象,其中包含了响应结果。

如果响应状态码不属于 2xx 范围,返回一个包含响应状态码和错误信息的失败的`Result`对象。

总结:该代码通过发送一个`POST`请求到指定的 Flask 服务器地址,将`user_messages`作为请求参数传递,然后根据响应结果返回相应的`Result`对象。

@GetMapping("/ask")
    public Result askquestion(@RequestParam String user_messages) throws URISyntaxException {
        System.out.println(user_messages);

        String flaskUrl = "http://127.0.0.1:5000/ask";

        // Create request body
        Map<String, String> requestBody = new HashMap<>();
        requestBody.put("user_message", user_messages);

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        URI uri = new URI(flaskUrl);

        HttpEntity<Map<String, String>> requestEntity = new HttpEntity<>(requestBody, headers);

        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> responseEntity = restTemplate.exchange(uri, HttpMethod.POST, requestEntity, String.class);

        System.out.println(responseEntity.getHeaders());
        if (responseEntity.getStatusCode().is2xxSuccessful()) {
            System.out.println("Success");
            String responce = responseEntity.getBody();
            System.out.println(responseEntity.getBody());
            return Result.success(responce);
        } else {
            return Result.error(responseEntity.getStatusCode().toString(),"Failed to invoke Flask endpoint.");
        }
    }

第二个函数:

该代码解析了一个使用`@GetMapping`注解的方法`resetMessage`,该方法没有参数,并返回一个`Result`对象。

首先,定义了一个`flaskUrl`变量,用于指定目标 Flask 服务器的 URL 地址。

然后,创建了一个`HttpHeaders`对象,并设置`Content-Type`为`MediaType.APPLICATION_JSON`,用于指定请求的内容类型为 JSON 格式。

接着,创建了一个`RequestEntity`对象,用于封装请求实体,其中包含了请求头、请求方法和请求的 URI。

然后,创建了一个`RestTemplate`对象,用于发送 HTTP 请求。

通过`RestTemplate`的`exchange`方法发送了一个`GET`请求,并将响应结果保存在`responseEntity`对象中。`exchange`方法的参数包括请求实体和响应类型。

接下来,通过判断`responseEntity`的状态码是否属于 2xx 成功状态码范围,如果是,则返回一个成功的`Result`对象,其中包含了"重置成功"的消息。

如果响应状态码不属于 2xx 范围,返回一个包含响应状态码和错误信息的失败的`Result`对象。

总结:该代码通过发送一个`GET`请求到指定的 Flask 服务器地址,用于重置消息,然后根据响应结果返回相应的`Result`对象。

@GetMapping("/reset")
    public Result resetMessage() throws URISyntaxException{
        String flaskUrl = "http://127.0.0.1:5000/reset";
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        RequestEntity<Void> requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI(flaskUrl));

        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> responseEntity = restTemplate.exchange(requestEntity, String.class);

        if (responseEntity.getStatusCode().is2xxSuccessful()) {
            return Result.success("重置成功");
        } else {
            return Result.error(responseEntity.getStatusCode().toString(),"Failed to invoke Flask endpoint.");
        }

    }

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值