본 문서는 Morpheus Mobile Client 와 Gateway Server간의 개발 연동을 위한 제반 사항을 기술한다.
해당 서비스 리소스에 대한 추가적인 요청 정보에 대해서 Parameter (HTTP Query String)로 정의하여 사용하도록 한다.
구분 | 항목 | Type | 필수 | 설명 |
---|---|---|---|---|
body | HTTP Method에 따른 선택적 정의 부분 | String | O | 해당 URI에 따른 값을 추가. (예: {“body”:{“deploy”:”0”…}}) |
API Response는 아래와 같은 구조를 같는 JSON 객체로 표현된다. 모바일 서버에서 클라이언트로 전송된 메시지 포맷은 아래와 같다.
구분 | 항목 | Type | 필수 | 설명 |
---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 |
result_msg | String | M | 처리 응답 결과 메시지 | |
body | 사용자 정의 부분 | String | M | 해당 리소스에 대한 정보를 표현하고 값이 존재 하지 않으면 공란으로 채운다. (예: {“body”:””}) |
(예제) API 호출 성공 응답
{
"head": {
"result_code": "200",
"result_msg": "OK"
},
"body": {
"name": "홍길동"
}
}
클라이언트와 서버간 오류 메시지는 다음과 같이 정의한다.
코드구분 | 구분명 | 코드 | 설명 |
---|---|---|---|
2xx | Successful | 200 | 정상적으로 처리 되었습니다. |
204 | 클라이언트 요구를 처리했으나 전송할 데이터가 없습니다. | ||
4xx | Client Error | 400 | 클라이언트의 잘못된 요청으로 처리할 수 없습니다. |
401 | 클라이이언트 인증에 실패 하였습니다. | ||
405 | 리소스를 허용할 수 없습니다. | ||
5xx | Server Error | 500 | 서버에서 오류가 발생 하였습니다. |
502 | 서버가 과부하 상태 입니다. | ||
503 | 서버가 일시적으로 다운 되었습니다. | ||
504 | 장시간 미사용으로 서버접속이 종료 되었습니다. | ||
599 | 보안 프로그램 오류 입니다. | ||
598 | 보안 통신이 원활하지 않습니다. | ||
597 | 응답결과 데이터가 존재하지 않습니다. | ||
596 | 응답 데이터 형식 오류가 발생하였습니다. |
리소스 업데이트, 앱 위변조 기능을 사용하기 위해 다음과 같은 모바일 API를 사용한다.
구분 | API URL | 설명 |
---|---|---|
리소스 업데이트 | /api/res/auto-update | 리소스 파일 버전을 확인하여 최신 리소스 파일 정보 조회 |
앱 위변조 | /getPreventToken | 앱 위변조 확인을 위해 토큰값 획득 |
/checkAppVerify | 앱 위변조를 체크하기 위해 앱 정보(hash값 포함) 획득 |
리소스 파일 버전을 확인하여 최신 리소스 파일 정보를 조회한다.
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/api/res/auto-update |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | screen_id | String | M | 화면 스크린아이디 |
system_name | String | M | 시스템명 | |
phone_no | String | M | 핸드폰번호 | |
app_version | String | M | 앱버전 | |
appid | String | M | 앱아이디 | |
device_md | String | M | 단말기 모델 | |
device_id | String | M | 단말기 아이디 | |
app_name | String | M | 앱이름 | |
callback_request_data_flag | String | M | HTTP 요청 데이터를 응답 데이터에 포함시켜 수신할지에 대한 여부 | |
system_version | String | M | 단말 OS 버전 | |
user_id | String | M | 사용자 아이디 | |
user_name | String | M | 사용자명 | |
body | deploy | String | M | 배포유형(0:개발, 1:운영) |
version | String | M | 배포버전 | |
rsp | String | M | 라이선스 정보 | |
userInfo | String | M | 사전 배포 대상 정보: 사전 배포 건에 대하여 배포 공개일 이전에 리소스 다운로드 가능한 대상 정보 |
Request 예제
{
"head": {
"screen_id": "0",
"system_name": "Android",
"phone_no": "1234567890",
"app_version": "0",
"appid": "kr.co.morpheus.mobile1",
"device_md": "SM-N900S",
"device_id": "111111223333338",
"app_name": "Morpheus",
"callback_request_data_flag": "n",
"system_version": "19",
"user_id": "user",
"user_name": "name"
},
},
"body": {
"version": "0001",
"deploy": "0",
"rsp": "2cda34717dabbd2c14159a7b7ecdedf098b6d9f12139ebfa45563ea93e2ac476f120668499a994bbbcef533d34b0d495",
"userInfo": "USER01"
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 | ||
---|---|---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 | ||
result_msg | String | M | 처리 응답 결과 메시지 | |||
body | update_files | Array | M | |||
role_id | String | M | 업무아이디 | |||
role_name | String | M | 업무이름 | |||
files | Array | M | ||||
url | String | M | 파일 URL | |||
md5 | String | M | 다운로드 배포 파일의 MD5 문자열 | |||
total_file_size | String | M | 버전별 배포 파일의 전체 크기 | |||
remove_files | Array | M | 삭제된 리소스 파일명 예: www/html/sample.html(res 폴더 하위 폴더부터 시작) | |||
version | String | M | 배포유형(0:개발, 1:운영) | |||
app_version_info | Array | M | ||||
download_market_url | String | M | 앱 다운로드 주소 | |||
required_app_version | String | M | 필수 앱 버전 | |||
current_app_version | String | M | 현재 앱 버전 | |||
notice | Array | M | ||||
title | String | M | 공지사항 제목 | |||
contents | String | M | 공지사항 내용 |
Response 예제
{
"head": {
"result_code": "",
"result_msg": ""
},
"body": {
"update_files": [
{
"role_id": "",
"role_nm": "",
"files": [{"url": "","md5": ""}],
"total_file_size": "",
"remove_files": [],
"version": ""
},
{
"role_id": "",
"role_nm": "",
"files": [{"url": "","md5": ""}],
"total_file_size": "",
"remove_files": [],
"version": ""
},
{
"role_id": "",
"role_nm": "",
"files": [{"url": "","md5": ""}],
"total_file_size": "",
"remove_files": [],
"version": ""
}
],
"app_version_info": {
"download_market_url": "",
"required_app_verion": "",
"current_app_version": ""
},
"notice": {
"title": "",
"contents": ""
}
}
}
앱 위변조 확인을 위해 토큰값 획득
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/getPreventToken |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | screen_id | String | O | 화면 스크린아이디 |
system_name | String | O | 시스템명 | |
phone_no | String | O | 핸드폰번호 | |
app_version | String | O | 앱버전 | |
appid | String | O | 앱아이디 | |
device_md | String | O | 단말기 모델 | |
device_id | String | O | 단말기 아이디 | |
app_name | String | O | 앱이름 | |
callback_request_data_flag | String | O | HTTP 요청 데이터를 응답 데이터에 포함시켜 수신할지에 대한 여부 | |
system_version | String | O | 단말 OS 버전 | |
user_id | String | O | 사용자 아이디 | |
user_name | String | O | 사용자명 | |
body | Array | M |
Request 예제
{
"head": {
"screen_id": "0",
"system_name": "Android",
"phone_no": "1234567890",
"app_version": "0",
"appid": "kr.co.morpheus.mobile1",
"device_md": "SM-N900S",
"device_id": "257630051275603",
"app_name": "Morpheus",
"callback_request_data_flag": "n",
"system_version": "19",
"user_id": "user",
"user_name": "name"
},
"body": {
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 |
result_msg | String | M | 처리 응답 결과 메시지 | |
screen_id | String | O | 화면 스크린아이디 | |
system_name | String | O | 시스템명 | |
phone_no | String | O | 핸드폰번호 | |
app_version | String | O | 앱버전 | |
appid | String | O | 앱아이디 | |
device_md | String | O | 단말기 모델 | |
device_id | String | O | 단말기 아이디 | |
app_name | String | O | 앱이름 | |
callback_request_data_flag | String | O | HTTP 요청 데이터를 응답 데이터에 포함시켜 수신할지에 대한 여부 | |
system_version | String | O | 단말 OS 버전 | |
user_id | String | O | 사용자 아이디 | |
user_name | String | O | 사용자명 | |
body | token | String | M | 토큰키 |
Response 예제
{
"head": {
"result_code": "",
"result_msg": "",
"screen_id": "0",
"system_name": "Android",
"phone_no": "1234567890",
"app_version": "0",
"appid": "kr.co.morpheus.mobile1",
"device_md": "SM-N900S",
"device_id": "257630051275603",
"app_name": "Morpheus",
"callback_request_data_flag": "n",
"system_version": "19",
"user_id": "user",
"user_name": "name"
},
"body": {
"token": "55be7083538e9fb72314f15c991b458287a6c228"
}
}
앱 위변조를 체크하기 위해 앱 정보(hash값 포함) 획득
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/checkAppVerify |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | screen_id | String | M | 화면 스크린아이디 |
system_name | String | M | 시스템명 | |
phone_no | String | M | 핸드폰번호 | |
app_version | String | M | 앱버전 | |
appid | String | M | 앱아이디 | |
device_md | String | M | 단말기 모델 | |
device_id | String | M | 단말기 아이디 | |
app_name | String | M | 앱이름 | |
callback_request_data_flag | String | M | HTTP 요청 데이터를 응답 데이터에 포함시켜 수신할지에 대한 여부 | |
system_version | String | M | 단말 OS 버전 | |
user_id | String | M | 사용자 아이디 | |
user_name | String | M | 사용자명 | |
body | appID | String | M | 앱아이디 |
appVer | String | M | 앱버전 | |
osType | String | M | 단말 OS 타입(A:안드로이드, I:IOS) | |
hash_key | String | M | 해시키 | |
token | String | M | 앱위변조 토큰 |
Request 예제
{
"head": {
"screen_id": "0",
"system_name": "Android",
"phone_no": "1234567890",
"app_version": "0",
"appid": "kr.co.morpheus.mobile1",
"device_md": "SM-N900S",
"device_id": "257630051275603",
"app_name": "Morpheus",
"callback_request_data_flag": "n",
"system_version": "19",
"user_id": "user",
"user_name": "name"
},
"body": {
"appId": "com.uracle.push.demo",
"appVer": "1",
"osType": "A",
"hash_key": "9e1d6918eff367c86dd8d5e2594cc809dae8f165",
"token": "9e1d6918eff367c86dd8d5e2594cc809dae8f165"
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 | |
---|---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 | |
result_msg | String | M | 처리 응답 결과 메시지 | ||
screen_id | String | M | 화면 스크린아이디 | ||
system_name | String | M | 시스템명 | ||
phone_no | String | M | 핸드폰번호 | ||
app_version | String | M | 앱버전 | ||
appid | String | M | 앱아이디 | ||
device_md | String | M | 단말기 모델 | ||
device_id | String | M | 단말기 아이디 | ||
app_name | String | M | 앱이름 | ||
callback_request_data_flag | String | M | HTTP 요청 데이터를 응답 데이터에 포함시켜 수신할지에 대한 여부 | ||
system_version | String | M | 단말 OS 버전 | ||
user_id | String | M | 사용자 아이디 | ||
user_name | String | M | 사용자명 | ||
body | resources | Array | M | ||
hash | String | M | 해시값 | ||
name | String | M | 파일명 | ||
entry | String | M | 경로 포함 파일명 | ||
mtime | long | M | 수정시간 | ||
size | Integer | M | 파일크기 | ||
bundles | Array | M | |||
hash | String | M | 해시값 | ||
name | String | M | 파일명 | ||
entry | String | M | 경로 포함 파일명 | ||
mtime | long | M | 수정시간 | ||
size | Integer | M | 파일크기 | ||
build | String | M | 앱위변조 빌드버전 |
Response 예제
{
"head": {
"result_code": "",
"result_msg": "",
"screen_id": "0",
"system_name": "Android",
"phone_no": "1234567890",
"app_version": "0",
"appid": "kr.co.morpheus.mobile1",
"device_md": "SM-N900S",
"device_id": "257630051275603",
"app_name": "Morpheus",
"callback_request_data_flag": "n",
"system_version": "19",
"user_id": "user",
"user_name": "name"
},
"body": {
"resources": [
{
"entry": "assets/res/Manifest.xml",
"size": 1730,
"name": "Manifest.xml",
"mtime": 1706850750000,
"hash": "79dc998959451ccf745519c839c7dc8b"
},
{
"entry": "assets/res/mcore.mobile.lic",
"size": 2281,
"name": "mcore.mobile.lic",
"mtime": 1706850750000,
"hash": "50420cca204ee4a6695acd4615931f62"
}
],
"bundles": [
{
"entry": "META-INF/com/android/build/gradle/app-metadata.properties",
"size": 56,
"name": "app-metadata.properties",
"mtime": 1706850750000,
"hash": "940c8a9678279ada3922fad99a606546"
},
{
"entry": "META-INF/INDEX.LIST",
"size": 273,
"name": "INDEX.LIST",
"mtime": 1706850750000,
"hash": "c0778d17aa2d182a910d47aa0e97e21b"
},
{
"entry": "META-INF/androidx.activity_activity.version",
"size": 6,
"name": "androidx.activity_activity.version",
"mtime": 1706850750000,
"hash": "730852c545ad888d07333a229acd5ed0"
}
],
"build": "1.0.0"
}
}