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.");
}
}