出自:https://blog.csdn.net/qq_45309010/article/details/111301381
https://segmentfault.com/q/1010000023764476
import java.io.BufferedReader;
import java.io.InputStreamReader;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.litong.utils.io.IOUtils;
import lombok.extern.slf4j.Slf4j;
@RestController
@RequestMapping("test")
@Slf4j
public class TestController {
// 這里我沒(méi)做異常處理
@RequestMapping("/request")
public String request(HttpServletRequest request, HttpServletResponse response) {
String method = request.getMethod();
log.info("method : " + method);
StringBuilder requestBody = new StringBuilder();
BufferedReader buffredReader = null;
try {
buffredReader = new BufferedReader(new InputStreamReader(request.getInputStream()));
String inputStr;
while ((inputStr = buffredReader.readLine()) != null) {
requestBody.append(inputStr);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(buffredReader);
}
return requestBody.toString();
}
}
RFC 文檔中從來(lái)就沒(méi)有說(shuō)過(guò) GET 沒(méi)有請(qǐng)求體.RFC 只是說(shuō) 只是說(shuō) GET 意味著通過(guò) URI 來(lái)識(shí)別資源。 這就意味著,各種代理緩存以及 CDN 都是通過(guò) URI 區(qū)分出資源.如果你把參數(shù)丟在了 REQUEST BODY里,那這些服務(wù)都要混亂了..
有些 http 的 lib 里不讓甚至直接不提供 GET 方法追加請(qǐng)求體的操作,單實(shí)際上,這并不是錯(cuò)誤.