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"
}

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이 없거나 존재하지 않을 때는 이 예외를 함께 반환하지 않습니다.