WebHook 또는 리버스 API

4598 단어 pythonbeginners
저는 프리랜서로 일부 개발 작업을 수행하여 지원 엔지니어가 되는 것 외에도 새로운 종류의 작업을 계속 업데이트합니다.

데이터가 JSON으로 노출되는 코드를 작성하는 작업을 생각해 냈습니다. 쉬운 일을 빨리 할 수 ​​있다고 생각했습니다. 그러나 작업에 트윅이 있었다. 코드는 API로 노출되지 않은 Webhook에 JSON으로 전송하는 것이었습니다. 처음으로 Webhook이라는 단어를 생각해 냈습니다. GOOGLE 선생님과 한 시간 동안 확인했습니다. 저는 여러분 모두와 공유하고 싶은 Webhook의 개념이 정말 마음에 들었습니다.

WebHook 또는 Reverse API는 모든 형식의 데이터가 다른 애플리케이션 POST 메소드 URL로 전송되는 개념입니다. 일반적으로 API에서 API의 새 데이터에 대해 서버를 계속 확인합니다. 그러나 Webhook에서는 서버가 데이터의 변경 사항을 찾을 때 클라이언트 응용 프로그램으로 전송됩니다.

이렇게 하면 클라이언트가 업데이트된 데이터를 확인하기 위해 매번 요청할 필요가 없기 때문에 서버에 대한 많은 트래픽을 방지할 수 있습니다. 그러나 API에는 고유한 용도가 있습니다.

이제 코드 관점을 통해 이해해 봅시다.
먼저 JSON 파일을 허용하는 Post Method를 FLask Server에서 만들어 보겠습니다. 이 메서드는 코드를 수락합니다. 따라서 이것은 웹훅 URL( http://localhost/webhook )이 됩니다.

@app.route("/webhook",methods=['POST'])
def respond():
    print(request.json)
    return Response(status=200)


서버 끝은 이제 일부 조건을 사용하여 트리거될 때 이 URL로 데이터를 보냅니다. 트리거된 조건이 충족되면 데이터가 URL로 전송됩니다.


# WebURL which will accept this Json file
webhook_url = "http://localhost/webhook"

# DB connection
cnxn = db_conn()

# SQL Query. Place your own query
df = pd.read_sql_query('''select * from sample''',cnxn)

# Convert sql result in json format
json_response = df.to_json(orient='records')
print(json)

# Send data to URL
while True:
if triggered: #Any condition as per your design logic
    reponse = requests.post(
    webhook_url,data=json.dumps(json_response),
    headers = {'Content-Type': 'application/json'}
)

# Raise Error if data send not successfull 200 code for successfull
if reponse.status_code != 200:
    print(reponse.status_code)
    raise ValueError("Error")


이 Youtube 링크는 Github에서 사용되는 WebHook에 대해 자세히 설명합니다. 이것을 시청하십시오.

좋은 웹페이지 즐겨찾기