API 만들기

API 만들기

다음 순서로 <도구 | API> 메뉴에서 필요한 API를 만듭니다.

  1. <도구 | API> 메뉴로 이동합니다. “관리” 권한이 필요합니다.

  2. <API 만들기> 링크를 클릭합니다.

  3. 기본 정보를 입력합니다.

    • 1유형을 선택합니다.

    • 2호출자를 선택합니다.

  4. <저장> 버튼을 클릭합니다.

API 호출자

API를 실행할 때 내부적으로는 API 호출자가 실행한 것으로 가정합니다. "관리" 권한이 있는 사용자만 호출자로 설정할 수 있습니다. 호출자를 비워 두면 API를 만든 사람을 호출자로 사용합니다. API 호출 시점에 호출자에게 "관리" 권한이 있어야 합니다. 그렇지 않으면 CALLER_IS_NOT_ADMIN 예외를 반환합니다.

클라이언트 IP 설정

특정 API를 호출할 수 있는 클라이언트를 IP로 제한할 수 있습니다. API 상세 화면에서 1클라이언트 IP를 설정합니다.

클라이언트 IP를 설정하지 않으면 모든 컴퓨터에서 해당 API를 호출할 수 있습니다.

특정 컴퓨터의 클라이언트 IP를 확인하려면 다음 주소(http://127.0.0.1:1975는 매뉴얼웍스를 설치한 서버의 도메인 정보 또는 IP 주소로 변경)를 호출합니다.

http://127.0.0.1:1975/r/api/client_ip

JSON 응답 결과는 다음과 같습니다.

{
	"ip": "127.0.0.1"
}

매뉴얼웍스 6.0.26 버전부터 API의 클라이언트 IP는 IP 주소로 접근 제어하기의 프록시 설정을 따라 판단하며, /r/api/client_ip도 같은 기준으로 IP를 알려 줍니다. 프록시 헤더를 신뢰하지 않으면(기본값) 서버에 직접 연결한 IP로 판단하므로, 로드 밸런서나 리버스 프록시 뒤에서는 프록시 서버의 IP가 클라이언트 IP가 됩니다. 프록시 뒤에서 클라이언트 IP를 설정한 API를 쓴다면 콘솔에서 trust-ip-filter-proxy로 프록시 헤더를 신뢰하고 set-ip-filter-proxy-count로 프록시 수를 정합니다. 프록시 수를 정하지 않으면 X-Forwarded-For 헤더의 첫 번째 값을 쓰는데, 이 값은 클라이언트가 임의로 넣을 수 있습니다.

API 호출 URL

API 상세 화면의 1URL을 호출합니다. API마다 세부 항목이 다를 수 있습니다.

API 키로 호출하기

매뉴얼웍스 6.0.26 버전부터 지원합니다.

주소에 API 아이디가 들어 있으면 그 주소를 아는 사람은 누구나 API를 부를 수 있습니다. API 상세 화면에서 API 키를 발급하면 주소 대신 키로 부를 수 있습니다. 키는 발급한 직후 한 번만 보여 주므로 안전한 곳에 보관합니다. 키를 다시 발급하면 앞서 발급한 키는 그 자리에서 쓸 수 없습니다.

키로 부를 때는 발급받은 키를 Authorization 헤더에 Bearer 형식으로 실어 API 상세 화면의 "키로 부르는 주소"를 호출합니다. 키가 맞지 않으면 UNKNOWN_API 예외를 반환합니다. 키로 불러도 클라이언트 IP 제한은 그대로 적용합니다. Action은 주소로 부를 때와 같이 GET 방식이면 ?action= 파라미터로, POST 방식이면 JSON 본문의 action으로 보냅니다.

curl -H "Authorization: Bearer 발급받은키" "http://127.0.0.1:1975/r/api/call?action=USER_LIST"

POST 방식으로 부를 때는 다음과 같이 본문에 Action을 넣습니다.

curl -X POST -H "Authorization: Bearer 발급받은키" -H "Content-Type: application/json" -d '{"action": "USER_REMOVE", "userId": "user01"}' http://127.0.0.1:1975/r/api/call

키를 발급해도 API 아이디가 든 예전 주소는 그대로 동작합니다. 예전 주소는 이미 만들어 둔 연동을 위해 남겨 둔 것이므로 새로 연동할 때는 키로 부릅니다.

쓰고 있는 연동을 멈추지 않고 키 방식으로 옮기려면 다음 순서로 진행합니다.

  1. API 상세 화면에서 API 키를 발급합니다.

  2. 연동을 헤더로 부르도록 바꾸고 잘 동작하는지 확인합니다.

  3. API 상세 화면에서 "주소의 API 아이디로 부르는 것을 막고 발급한 키로만 받습니다." 옵션을 켭니다.

옵션을 켤 때는 다음을 참고합니다.

주소에 API 아이디가 실리면 웹 서버와 프록시의 접근 로그, 브라우저 주소창과 이력에 아이디가 그대로 남습니다. 옵션을 켜기 전까지는 아이디를 아는 사람이 API를 부를 수 있으므로, 아이디가 샜다고 보는 API는 키를 발급한 뒤 옵션을 켭니다.

API 호출 공통 예외 항목

예외 항목은 다음과 같습니다.

API 호출 공통 예외 항목

예외

설명

ACTION_REQUIRED

Action을 설정하지 않았을 때

CALLER_IS_NOT_ADMIN

호출자가 "관리" 권한이 없을 때

THROWABLE

시스템 또는 프로그램 예외가 발생했을 때. 처리하지 않은 예외는 message에 내부 정보 대신 internal_error를 담습니다. 자세한 내용은 서버 로그에 남깁니다.

NOT_ALLOWED_CLIENT_IP

해당 클라이언트에서 API를 호출할 수 없을 때

UNKNOWN_ACTION

Action이 존재하지 않을 때

UNKNOWN_API

API가 존재하지 않을 때. 키가 맞지 않거나, 키로만 부르도록 설정한 API를 주소의 API 아이디로 불렀을 때도 반환합니다.

UNKNOWN_CALLER

호출자가 존재하지 않을 때

UNSUPPORTED_ACTION

해당 API가 지원하지 않는 Action이거나 아직 구현하지 않은 Action일 때

UNSUPPORTED_HTTP_METHOD

GET 또는 POST 방식으로 호출해야 하는 API를 다른 방식으로 호출했을 때. Action이 없거나 존재하지 않을 때는 이 예외를 함께 반환하지 않습니다.