這幾天在修改一個(gè)前后端分離的商城項(xiàng)目。項(xiàng)目前端向后端發(fā)出數(shù)據(jù)請(qǐng)求之后,收到的卻是504網(wǎng)關(guān)超時(shí)錯(cuò)誤。
但是控制臺(tái)卻不止報(bào)錯(cuò)了網(wǎng)關(guān)超時(shí),還有跨域請(qǐng)求的問(wèn)題:
根本搞不清是哪個(gè)問(wèn)題導(dǎo)致了另外一個(gè)問(wèn)題還是獨(dú)立的兩個(gè)問(wèn)題。
直接點(diǎn)擊網(wǎng)址訪問(wèn)又會(huì)因?yàn)闆](méi)有權(quán)限報(bào)錯(cuò):
這時(shí)候我想到了可以通過(guò)Postman進(jìn)行模擬網(wǎng)絡(luò)請(qǐng)求,從而查看后端返回?cái)?shù)據(jù)。
Postman官網(wǎng):https://www.getpostman.com/downloads/
下載之后直接雙擊打開(kāi),第一次需要用郵箱注冊(cè)賬號(hào)或者直接Google登錄(不推薦,懂得都懂)。
登錄過(guò)后頁(yè)面:
這下可以直接向后端發(fā)送網(wǎng)絡(luò)請(qǐng)求了。復(fù)制網(wǎng)址并輸入,同時(shí)因?yàn)檎?qǐng)求頭帶有Authorization,所以要在postman的Authorization中選擇bearer token 并填入token值。此外,網(wǎng)頁(yè)請(qǐng)求標(biāo)頭還帶有tenantId,所以要在請(qǐng)求頭上加上這部分。
(此處postman也顯示504,但是無(wú)圖)
因?yàn)閜ostman發(fā)送請(qǐng)求時(shí)不會(huì)有跨域問(wèn)題的,所以問(wèn)題出在后端并不是因?yàn)榭缬驅(qū)е抡?qǐng)求未送達(dá)至后端。
然后看了一眼后端的運(yùn)行日志:
前端請(qǐng)求確實(shí)到達(dá)了后端,那么到底是哪里連接超時(shí)了呢?
這個(gè)前后端分離項(xiàng)目,后端不同的服務(wù)咋愛(ài)不同的端口上運(yùn)行,那么是否請(qǐng)求真的到了對(duì)應(yīng)的服務(wù)嗎?用Postman向?qū)?yīng)端口發(fā)送請(qǐng)求試一下:
這下又和前端報(bào)錯(cuò)不一樣了,怎么回事呢?
突然想到,防火墻是不是沒(méi)有允許訪問(wèn)這個(gè)端口?去服務(wù)器上看一看:
還真的沒(méi)有開(kāi)放端口。那么把防火墻關(guān)了試一下:
這下和日志里面報(bào)一樣的錯(cuò)誤了,看來(lái)也不是防火墻的問(wèn)題。只能去源碼上一點(diǎn)點(diǎn)做標(biāo)記了。
@Log("查詢商品分類")
@ApiOperation(value = "查詢商品分類")
@GetMapping(value = "/yxStoreCategory")
@PreAuthorize("hasAnyAuthority('admin','YXSTORECATEGORY_ALL','YXSTORECATEGORY_SELECT')")
// @ResponseBody
public ResponseEntity getYxStoreCategorys(YxStoreCategoryQueryCriteria criteria, Pageable pageable){
log.info("查詢商品分類 進(jìn)入方法測(cè)試");
List<YxStoreCategoryDto> categoryDTOList = yxStoreCategoryService.queryAll(criteria);
log.info(categoryDTOList.toString());
log.info("查詢商品分類 成功查詢測(cè)試");
return new ResponseEntity<>(yxStoreCategoryService.buildTree(categoryDTOList),HttpStatus.OK);
//return new ResponseEntity<>("Hello World!",HttpStatus.OK);
}
通過(guò)標(biāo)記可以得知,直到返回之前所有執(zhí)行都沒(méi)有問(wèn)題,向數(shù)據(jù)庫(kù)發(fā)出請(qǐng)求也得到了回復(fù)數(shù)據(jù)。也不是ResponseEntity的問(wèn)題。而且也有其他一小部分能正常從后端返回的數(shù)據(jù)。
去查看那些能正常返回的源代碼,發(fā)現(xiàn)能夠正常返回的方法上面都沒(méi)有@Log
注解。。。
嘗試注釋掉這個(gè)注解,發(fā)現(xiàn)后端能夠正常返回?cái)?shù)據(jù)了。/(ㄒoㄒ)/~~
又返回源代碼看了一下,發(fā)現(xiàn)這個(gè)@Log
注解是一個(gè)經(jīng)過(guò)封裝的注解,不是lombok自帶的@Log
注解。既然只是一個(gè)不影響主要功能的日志注解那么直接停用就行了,至于為什么會(huì)影響返回就不去考慮了。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-481114.html
經(jīng)驗(yàn)教訓(xùn):不如直接在代碼中添加標(biāo)記確認(rèn)錯(cuò)誤位置。本以為不是后端代碼的問(wèn)題,同時(shí)每次修改后端都要重新打包發(fā)布覺(jué)得麻煩卻因此浪費(fèi)了在其他方面尋找錯(cuò)誤所用的時(shí)間。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-481114.html
到了這里,關(guān)于Postman的安裝和簡(jiǎn)單運(yùn)用解決小問(wèn)題的過(guò)程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!