使用curl訪問api以下:java
curl http://127.0.0.1:8080/test?a=1&b=2&c=3
會報錯linux
ServiceExceptionHandler.java[line:30] exception ERROR org.springframework.web.bind.MissingServletRequestParameterException: Required String[] parameter 'b' is not present
包含有特殊符號會致使截斷web
在url中直接使用一些特殊字符,在服務器端接收的時候常常出現數據丟失的狀況。
那麼哪些字符可以直接被服務器識別,哪些有不能呢?
字符「a-z」,」A-Z」,」0-9」,」.」,」-「,」_」,」*」都會直接被服務器識別,維持原值。
然而,字符」+」,」/」,」?」,」%」,」#」,」&」,」=」都將被轉碼。那麼咱們就須要轉碼來讓服務器進行識別。spring
轉義特殊符號api
在Linux下服務器
curl http://127.0.0.1:8080/test?a=1&b=2&c=3
$_GET只能獲取到參數acurl
因爲url中有&,其餘參數獲取不到,在linux系統中& 會使進程系統後臺運行svg
必須對&進行下轉義才能$_GET獲取到全部參數post
curl http:/127.0.0.1:8080/test?a=1\&b=2\&c=3
方式二ui
序號 | 特殊字符 | 十六進制值 |
---|---|---|
1 | % | %25 |
2 | # | %23 |
3 | & | %26 |
4 | + | %2B |
5 | = | %3D |
6 | 空格 | %20 |
7 | / | %2F |
8 | \ | %5C |
9 | ? | %3F |
10 | . | %2E |
11 | : | %3A |
put 或者post方法中 -d 使用單引號 括起來的則不須要轉義