RestTemplate 使用總結

2021-09-08 18:24:04 字數 1453 閱讀 9259

認證伺服器需要有個 http client 把前端發來的請求**到 backend service, 然後把 backend service 的結果再返回給前端,伺服器本身只做認證功能。

access_token 不應傳到 backend service. backend service 之間通訊不需要 token,因為到這些服務的請求都是已經認證過的,是可信賴的使用者發出的請求。因此**請求時要把 parameter 從 request url 中刪掉。刪除 parameter 說難不難,說簡單其實還有點麻煩,網上有乙個urlencodedquerystring可以參考下,它封裝了很多函式,其中就包括從url 中摘掉指定 header

請求的 httpmethod 問題。 httpmethod 有很多種,http client 不應該對每種 http method 都單獨處理,所以應選用 resttemplate 的 exchange 方法。exchange 方法要求給出 requestbody 引數,而對於 get 請求,這部分往往為空,所以我們要在 controller 中宣告@requestbody(required = false) string body

exchange 的返回值和 controller 的返回值。restful api 一般都是返回 json 的,所以最簡單的是 exchange 和 controller 直接返回 string,但是返回 string 會有很多問題: 首先是如果某些 api 返回的是,那麼這個 client 就傻掉了,需要為介面專門寫 api,此外如果 backend service 返回的是 gzip,那麼此 client 必須對 gzip 先解壓縮再返回請求者,如果不解壓縮的話,相當於對著 gzip 資料做了到 string 型別的強制轉換,使得請求者拿到的資料無法解析,所以最好的返回值是 byte。對於那種比較大的 json 返回值,省去了對 string 的型別轉換後還能帶來很大的效能提公升

關於返回值是 byte 還是 responseentity的問題。我覺得還是 responseentity好些,因為它就是 backend service 的結果。如果返回 byte 的話,還要對 httpservletresponse 的 header 進行修改,設定 content-type, content-encoding 等等。

RestTemplate呼叫遠端介面的總是不通?

很多同學在問我,resttemplate呼叫遠端第三方介面總是報錯的問題,在這裡提一下,因為思路其實非常簡單,但問我的同學卻很無處下手,希望可以幫到大家。resttemplate其實就是http協議的生成並呼叫,作用同第三方http client工具,只是乙個是工具乙個是 但功能完全一致。在不知道怎...

RestTemplate使用總結

resttemplate的介紹就不說了,總的來說用這個物件可以很方便的模擬乙個http請求。talk is cheap,show me the code,使用的是springboot整合的工程所以以下涉及到的物件都是註解式的宣告和注入,一 宣告resttemplate物件 當然,可以利用註解 bea...

RestTemplate使用總結

resttemplate的介紹就不說了,總的來說用這個物件可以很方便的模擬乙個http請求。talk is cheap,show me the code,使用的是springboot整合的工程所以以下涉及到的物件都是註解式的宣告和注入,一 宣告resttemplate物件 當然,可以利用註解 bea...