봉봉의 개인 블로그

2018-01-09(incoming webhook ajax) 본문

입사후 공부한내용

2018-01-09(incoming webhook ajax)

봉봉이네 2018. 1. 9. 15:52

Webhook 이란

웹서비스를 제공해주는 서버단에서 어떤 이벤트를 외부로 전달하는 방법중의 하나이다.
예를들어 어떤 게시판을 제공하는 서비스가 있다고 할때,
게시판에 새로운 글이 등록될 때마다, 특정 알림을 다른 서비스나, 메신저에 알리려고 할때 유용할 수 있습니다.

위 상황에서 게시판에 새로운 글이 등록된다는 사실을 알아내야만 후속되는 처리를 할수 있습니다.

만약 게시판 제공 서비스에서 어떤 액션(새로운 글을 등록)이 일어나는 것에 대해 훅킹(어떤 액션 앞뒤에다가 추가로 정해진 일을 하도록 하는것) 할수 있다면 , 위의 상황을 처리할 수 있습니다.

여기에서 웹훅은 앞의 훅킹을 웹 환경에서 제공하는 것으로 보면 될 것 같습니다.

먼저 서비스(게시판 제공 서비스)에 훅킹 할 수 있도록 기능 제공해야합니다. 훅킹을 해서 뭔가 처리하려는 서비스를 자신이 만들고 , 이 서비스 URL을 앞의 게시판 제공 서비스와 같이 정보 제공 서비스에다가 등록하는 방식인것 같다.

일반적으로 웹서비스는 정보를 필요로하는 측이 클라이언트로서 서비스에 요청하는 것인데 반해, 웹훅은 그 반대 방향으로 요청됩니다. 정보를 필요로 하는 측이 서버가 되고 , 엔드 포인트 주소를 서비스에 제공하게 되며, 서비스는 어떤 정보를 줄수 있는지 공개하는 방식으로 생각하면 될것 같습니다.

*훅킹 URL을 제공하는 서비스

- 이 경우는 다른 서비스 개발자가 이 훅킹 서비스를 호출하도록 하는 형태일것 같다.

- 예를들어, 메신저와 같은 서비스는 훅킹URL을 제공하여, 다른 서비스에서 발생하는 조건에 따라 메신저 내에서 어떤 일(메세지 발송 등)을 하도록 할수 있을것 같다.

*훅킹이 가능한 서비스를 만들 수도 있다.

- 서비스를 만들면서, 주요 이벤트 들을 외부에서 알아챌 수 있도록 하고 , 어떤 이벤트가 발생하고, 데이터를 어떻게 전달하는지 명세한후 , 이벤트마다 URL 을 등록받을수 있을것 같다.


AJAX를 통해 Agit incoming webhook 서비스를 이용하기.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function AgitTest(){
    var url = '';    // 서비스 URL 이 들어오면 된다.
    var text = '';    // 보낼 메세지를 입력한다.
 
    $.ajax({
        data        :    'payload=' + JSON.stringify({
                    "text": text
        }),
        dataType    :    'json',
        processData    :    false,
        type        :    'POST',
        url            :    url
    }) 
}
 
//위와 같이 입력해 주기만 하면 된다.
cs

위와 같이 입력해 준다. 하지만 javaScript 파일에 ajax 로 요청하는것이기 때문에 보안(?)상 안좋을것같아 서버단에서 처리할수 있는 방법을 생각해보아야 겠다.

Comments