# 完全请求转发 **Repository Path**: songrenshuo/request-forwarding ## Basic Information - **Project Name**: 完全请求转发 - **Description**: 完全请求转发,转发请求头、请求体、请求方式, 请求方式目前支持GET、POST、PUT、DELETE、PATCH、OPTIONS、HEAD、TRACE。 请求类型支持form-data、json、xml等 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 2 - **Created**: 2024-05-20 - **Last Updated**: 2026-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # request-forwarding ## 项目介绍 完全请求转发,转发请求头、请求体、请求方式, 请求方式目前支持GET、POST、PUT、DELETE、PATCH、OPTIONS、HEAD、TRACE。 请求类型支持form-data、json、xml等 ## 调用说明 apifox接口文档:https://s.apifox.cn/b530b36d-46e7-4d7a-af00-e6a40a002f79 #### 例如需要请求目标接口(POST-JSON): `https://httpbin.org/post` #### Body请求参数: ```json { "key":"value" } ``` #### 调用请求转发接口: http://localhost:7777/post #### Query请求参数: | 字段名 |示例值| 描述 | | --- | --- | --- | | targetBaseUrl | https://httpbin.org |目标targetBaseUrl(必填参数)| | targetBaseUrlRemove | false |目标URL参数是否移除| #### Body请求参数: ```json { "key":"value" } ``` #### 调用示例 ```java /** * 测试 POST-JSON请求 */ @Test void testJson() { // 最终目标地址 String targetBaseUrl = "https://httpbin.org"; HttpResponse execute = HttpUtil.createPost("http://localhost:7777/post?targetBaseUrl=" + targetBaseUrl+"&targetBaseUrlRemove=false") .contentType("application/json; charset=utf-8") .header("token", "token------") .body("{\"key\":\"value\"}").execute(); System.out.println("响应:" + execute.body()); // 响应: { // "data": "{\"key\":\"value\"}", // "json": { // "key": "value" // } // } } ``` ### **注:请求转发接口路径与直接调用目标接口时一致** ## 更新记录 - 2025-10-07: 将RestTemplate替换为WebClient,提升异步处理能力和性能 - WebClient是Spring 5引入的响应式、非阻塞的HTTP客户端,支持函数式API和声明式配置 - 相比于RestTemplate,WebClient具有更好的性能和可扩展性,特别是在高并发场景下 - WebClient支持背压(Backpressure),可以更好地控制数据流,避免资源耗尽 - WebClient的API设计更加现代化,易于使用和维护