pub struct KakaoService {
client: Client,
api_key: String,
}
So what: reqwest::Client를 구조체 필드로 보유한다
So why: Client::new()는 내부적으로 커넥션 풀을 생성한다. 요청마다 새로 만들면 TCP 연결을 매번 새로 맺어야 해서 지연이 생긴다. AppState에 KakaoService를 한 번만 생성해두고 재사용하면 커넥션 풀을 공유해서 반복 요청이 빨라진다
.header("Authorization", format!("KakaoAK {}", self.api_key))
.header("KA", "sdk/1.0.0 os/server")
So what: REST API 키 인증 방식으로 KakaoAK 접두어를 붙이고, KA 헤더로 서버 SDK임을 명시한다
So why: Kakao API는 키 종류에 따라 인증 방식이 다르다. JavaScript Key는 브라우저에서 Origin으로 인증하고, REST 키는 서버에서 KakaoAK로 인증한다. JS 키를 서버에서 쓰려다 인증 실패가 났던 이유가 이것 때문이다. KA 헤더는 Kakao 서버측에서 클라이언트 환경을 식별하는 용도이다.
'Project > SSAFY2학기 특화 PJT' 카테고리의 다른 글
| [BE] routes.rs ( TMAP API ) (0) | 2026.03.13 |
|---|---|
| [BE] seoul.rs ( 서울 열린 데이터 광장 API ) (0) | 2026.03.13 |
| [BE, AI] 언어 선택 이유 (0) | 2026.03.13 |
| [BE] odsay.rs ( ODSAY API 연동 ) (0) | 2026.03.13 |
| [AI] main.py ( 서버 실행 ) (0) | 2026.03.13 |
