항상 자바로만 개발하다가 파이썬을 활용해야 할 일이 생겨서 파이썬으로 API 요청하는 테스트를 해보려고 합니다.
또한 API 서버를 구축하여 요청받은 API를 처리하는 것까지 테스트해보려 합니다.
내용이 많고 복잡할수록 더 구성해야 할 것들이 많지만 간단하게 주고받는 통신 테스트 정도로 진행하도록 하겠습니다.
POST 방식으로 Json 데이터와 함께 API 호출을 하고,
서버에서는 받은 Json 데이터 확인 및 간단한 응답 데이터를 보내주는 동작을 해보도록 하겠습니다.
1. 서버 만들기
예제를 보면서 살펴보도록 하겠습니다.
app_controller.py
from flask import Flask, request, json, jsonify
app = Flask(__name__)
@app.route("/test", methods=['POST'])
def test():
params = request.get_json()
print("받은 Json 데이터 ", params)
response = {
"result": "ok"
}
return jsonify(response)
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8080)
예제 파이썬 실행 결과입니다.
1-1. URL 설정
@app.route() 내부에 첫 번째 항목은 URL을 설정하는 것입니다.
IP:PORT/~~
IP:포트 뒤로 오는 부분의 URL을 지정해줍니다.
예제에는 "/test"로 설정하였는데 그렇다면 최종 URL은 "http://127.0.0.1:8080/test"입니다.
1-2. 메서드 설정
URL 설정 뒤 두 번째 항목은 메서드 종류를 설정합니다.
POST방식으로 테스트할 것이기 때문에 POST로 입력하였습니다.
1-3. 요청 시 보낸 데이터 확인
request.get_json()을 사용하여 데이터를 확인할 수 있습니다.
또한 받은 Json데이터는 get()를 사용하여 key값에 해당하는 값을 확인할 수도 있습니다.
예) params.get('keyName')
1-4. return
return값을 보내면 API 요청한 쪽에서 return 보낸 값을 응답받을 수 있습니다.
2. API 호출
이번에는 API 호출하는 예제를 보도록 하겠습니다.
import requests
import json
# URL
# 127.0.0.1은 localhost로 대체 가능
url = "http://127.0.0.1:8080/test"
# headers
headers = {
"Content-Type": "application/json"
}
# data
temp = {
"color": "black",
"size": 200
}
# 딕셔너리를 JSON으로 변환
data = json.dumps(temp)
response = requests.post(url, headers=headers, data=data)
print("response: ", response)
print("response.text: ", response.text)
url, headers, data 이 세 가지 내용이 필요합니다.
서버에 맞춰 내용을 입력한 후 requests.post()로 요청합니다.
3. 테스트 결과
3-1. 요청한 쪽 결과
3-2. 서버 쪽 결과
간단하게 데이터를 주고받는 테스트를 완료하였습니다.
예제를 기반으로 필요한 내용들을 추가해나가면 더 다양한 기능을 사용할 수 있을 것입니다.
** 추가
혹시 파이썬 실행 시 import 쪽에 오류가 발생한다면 pip install 명령어를 사용하여 설치하시면 됩니다.