{ "info": { "_postman_id": "c3f4a1e0-9b2d-4a11-8e5a-session-cache-0001", "name": "SessionCacheManage API (/manage/session)", "description": "SessionManager(SessionManagerForIgnite/SessionManagerForEhcache) 캐시 조회 API 샘플 모음.\n\n사용 전 확인사항:\n1. Collection Variables 의 baseUrl 을 실제 서버 주소로 변경\n2. 서버가 Ignite 캐시 백엔드로 기동된 경우에만 outbound-access-token 캐시가 채워짐 (Ehcache 백엔드는 success=false로 응답, 정상 동작임)\n3. 모든 요청은 조회 전용(GET)이며 실제 세션/캐시 데이터를 변경하지 않는다.", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "variable": [ { "key": "baseUrl", "value": "http://localhost:8080", "type": "string" } ], "item": [ { "name": "1. 캐시 요약 / 마스터 인스턴스", "item": [ { "name": "전체 캐시 요약 (구현체별 XML)", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/manage/session/cache/status", "host": ["{{baseUrl}}"], "path": ["manage", "session", "cache", "status"] }, "description": "Ignite/Ehcache 구현체가 각자 형식으로 만든 전체 캐시 이름/크기 요약 텍스트(XML)를 반환한다." }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "const json = pm.response.json();", "pm.test('status 200', () => pm.response.to.have.status(200));", "pm.test('success = true', () => pm.expect(json.success).to.eql(true));", "pm.test('data는 문자열(XML)', () => pm.expect(json.data).to.be.a('string'));", "pm.test('Caches 루트 태그 포함', () => pm.expect(json.data).to.include(' pm.response.to.have.status(200));", "pm.test('success = true', () => pm.expect(json.success).to.eql(true));", "console.log('master instance id:', json.data);" ] } } ] } ] }, { "name": "2. 개별 캐시 조회", "item": [ { "name": "로그인(WebSocket) 캐시", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/manage/session/cache/login", "host": ["{{baseUrl}}"], "path": ["manage", "session", "cache", "login"] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "const json = pm.response.json();", "pm.test('status 200', () => pm.response.to.have.status(200));", "pm.test('success = true', () => pm.expect(json.success).to.eql(true));", "pm.test('name = loginSession', () => pm.expect(json.data.name).to.eql('loginSession'));", "pm.test('keys는 배열', () => pm.expect(json.data.keys).to.be.an('array'));", "pm.test('size는 keys 개수와 일치', () => pm.expect(json.data.size).to.eql(json.data.keys.length));" ] } } ] }, { "name": "HTTP 로그인 캐시", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/manage/session/cache/http-login", "host": ["{{baseUrl}}"], "path": ["manage", "session", "cache", "http-login"] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "const json = pm.response.json();", "pm.test('status 200', () => pm.response.to.have.status(200));", "pm.test('success = true', () => pm.expect(json.success).to.eql(true));", "pm.test('name = httpLogin', () => pm.expect(json.data.name).to.eql('httpLogin'));", "pm.test('keys는 배열', () => pm.expect(json.data.keys).to.be.an('array'));" ] } } ] }, { "name": "싱글 어댑터 evict-master 캐시", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/manage/session/cache/evict-master", "host": ["{{baseUrl}}"], "path": ["manage", "session", "cache", "evict-master"] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "const json = pm.response.json();", "pm.test('status 200', () => pm.response.to.have.status(200));", "pm.test('success = true', () => pm.expect(json.success).to.eql(true));", "pm.test('name = evictMasterCache', () => pm.expect(json.data.name).to.eql('evictMasterCache'));", "pm.test('keys는 배열', () => pm.expect(json.data.keys).to.be.an('array'));" ] } } ] }, { "name": "단말(ATM 등) 캐시", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/manage/session/cache/terminal", "host": ["{{baseUrl}}"], "path": ["manage", "session", "cache", "terminal"] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "const json = pm.response.json();", "pm.test('status 200', () => pm.response.to.have.status(200));", "pm.test('success = true', () => pm.expect(json.success).to.eql(true));", "pm.test('name = terminalSession', () => pm.expect(json.data.name).to.eql('terminalSession'));", "pm.test('keys는 배열', () => pm.expect(json.data.keys).to.be.an('array'));" ] } } ] }, { "name": "단말ID→사용자ID 변환 캐시", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/manage/session/cache/convert-user-id", "host": ["{{baseUrl}}"], "path": ["manage", "session", "cache", "convert-user-id"] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "const json = pm.response.json();", "pm.test('status 200', () => pm.response.to.have.status(200));", "pm.test('success = true', () => pm.expect(json.success).to.eql(true));", "pm.test('name = convertUserIdSession', () => pm.expect(json.data.name).to.eql('convertUserIdSession'));", "pm.test('keys는 배열', () => pm.expect(json.data.keys).to.be.an('array'));" ] } } ] }, { "name": "소켓 세션 캐시", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/manage/session/cache/socket", "host": ["{{baseUrl}}"], "path": ["manage", "session", "cache", "socket"] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "const json = pm.response.json();", "pm.test('status 200', () => pm.response.to.have.status(200));", "pm.test('success = true', () => pm.expect(json.success).to.eql(true));", "pm.test('name = adapterSession', () => pm.expect(json.data.name).to.eql('adapterSession'));", "pm.test('keys는 배열', () => pm.expect(json.data.keys).to.be.an('array'));" ] } } ] }, { "name": "아웃바운드 AccessToken 캐시 (Ignite 전용)", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/manage/session/cache/outbound-access-token", "host": ["{{baseUrl}}"], "path": ["manage", "session", "cache", "outbound-access-token"] }, "description": "Ignite 백엔드에서만 지원한다. Ehcache 백엔드로 기동된 서버라면 success=false + message로 응답하며, 이는 정상 동작이다(서버 500 아님)." }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "const json = pm.response.json();", "pm.test('status 200', () => pm.response.to.have.status(200));", "if (json.success) {", " pm.test('data.name 존재', () => pm.expect(json.data.name).to.be.a('string'));", " pm.test('data.keys는 배열', () => pm.expect(json.data.keys).to.be.an('array'));", "} else {", " pm.test('미지원 백엔드는 message 포함', () => pm.expect(json.message).to.be.a('string'));", " console.log('OutboundAccessToken 캐시 미지원 백엔드:', json.message);", "}" ] } } ] } ] }, { "name": "3. 전체 캐시 목록", "item": [ { "name": "모든 캐시 한번에 조회", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/manage/session/cache/all", "host": ["{{baseUrl}}"], "path": ["manage", "session", "cache", "all"] }, "description": "login/http-login/evict-master/terminal/convert-user-id/socket 6종은 항상 포함되고, outbound-access-token은 Ignite 백엔드일 때만 추가되어 count가 6 또는 7이 된다." }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "const json = pm.response.json();", "pm.test('status 200', () => pm.response.to.have.status(200));", "pm.test('success = true', () => pm.expect(json.success).to.eql(true));", "pm.test('data는 배열', () => pm.expect(json.data).to.be.an('array'));", "pm.test('count는 6 또는 7 (백엔드에 따라 outbound-access-token 포함 여부 다름)', () => {", " pm.expect(json.count).to.be.oneOf([6, 7]);", "});", "pm.test('count와 data.length 일치', () => pm.expect(json.count).to.eql(json.data.length));", "json.data.forEach((cache) => {", " pm.test(`캐시 [${cache.name}] 는 keys 배열을 가짐`, () => pm.expect(cache.keys).to.be.an('array'));", "});" ] } } ] } ] } ] }