API 관련 수정

This commit is contained in:
2025-12-19 15:41:37 +09:00
parent 5b83c30327
commit 465a82093e
7 changed files with 131 additions and 26 deletions

View File

@@ -16,10 +16,10 @@ class KisoController extends BaseController
public function vrfcReq()
{
// 1. 요청 방식에 따라 데이터 파싱
if ($this->request->getMethod() === 'post') {
if ( $this->request->is('post') ) {
// POST 방식: JSON Body에서 데이터 가져오기
$data = $this->request->getJSON(true);
} elseif ($this->request->getMethod() === 'get') {
} else if ( $this->request->is('get') ) {
// GET 방식: Query Parameter에서 데이터 가져오기
$data = $this->request->getGet();
} else {
@@ -29,7 +29,7 @@ class KisoController extends BaseController
}
// 2. 필수 항목 검증
$requiredKeys = ['articleNumbr', 'reqeustType', 'requestDatetime'];
$requiredKeys = ['articleNumber', 'requestType', 'requestDatetime'];
foreach ($requiredKeys as $key) {
// 파싱된 데이터($data) 내에 키가 없거나 값이 비어있는지 확인
@@ -43,32 +43,30 @@ class KisoController extends BaseController
}
// 3. Redis 연결 및 예외 처리
// 3. Redis 연결 및 직접 푸시
try {
// CI4 Cache Service 인스턴스를 가져옴. 기본 핸들러가 Redis여야 함.
// (또는 Services::cache('redis')를 사용해 RedisHandler를 명시적으로 요청)
$redis = \Config\Services::cache();
$redis = new \Redis();
// Docker 환경이므로 host를 'redis'로 설정
$success = $redis->connect('redis', 6379);
// Redis 핸들러가 맞는지 확인 (선택 사항)
if (!($redis->getHandler() instanceof RedisHandler)) {
throw new \Exception('Cache handler is not Redis. Check Config/Cache.php $handler setting.');
if (!$success) {
throw new \Exception('Redis connection failed');
}
// 요청에 재시도 횟수 초기화
$redis->select(10); // 10번 DB 선택
// 데이터 준비
$data['retry_count'] = 0;
// RedisHandler의 getClient()를 사용하여 원본 \Redis 객체를 가져옵니다.
// 주의: 모든 RedisHandler가 getClient()를 제공하는 것은 아니지만, CI4 내장 RedisHandler는 제공합니다.
$client = $redis->getHandler()->getClient();
// 큐에 push
$client->lPush('naver:queue', json_encode($data));
// 리스트에 데이터 삽입 (이 명령어가 실행되어야 monitor에 LPUSH가 뜹니다)
$redis->lPush('naver:queue', json_encode($data));
} catch (\Exception $e) {
log_message('error', 'Redis connection failed: ' . $e->getMessage());
return $this->response->setStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR)
->setJSON([
'resultCode' => 'E999',
'resultMessage' => 'Internal server error (Queue system unavailable)'
]);
log_message('error', 'Redis Push Error: ' . $e->getMessage());
return $this->response->setStatusCode(500)->setJSON([
'resultCode' => 'E999',
'resultMessage' => 'Redis Connection Error'
]);
}
// 4. 성공 응답
@@ -76,7 +74,7 @@ class KisoController extends BaseController
->setJSON([
'resultCode' => 'S000',
'resultMessage' => 'Request successfully queued for processing',
'articleNumbr' => $data['articleNumbr']
'articleNumber' => $data['articleNumber']
]);
}
}