[ํ๋ก๊ทธ๋๋จธ์ค ๊ณผ์ ํ์ด][์ค๋ฌด ์ญ๋ ๊ณผ์ ] API ์๋ฒ ๊ฐ๋ฐ ํ์ด์ฌ
https://school.programmers.co.kr/skill_check_assignments/430
๋ค์ด๊ฐ๊ธฐ์ ์
ํฌ๊ฒ ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋๊ณ ํ๋ผ์คํฌ ์จ๋ณธ ๊ฒฝํ ์์ผ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ๊ฐ๋ค
ํ์ด์ฌ์ผ๋ก ๊ณผ์ ๋ ์ ์๊ธฐ๋ํ๊ณ ํด๋น ๋ฌธ์ ๋ ์๋ฐ๋ก ํ์ดํ ๊ฒฝ์ฐ๊ฐ ๋ง์์ ํ์ด์ฌ์ผ๋ก ํ์ดํ๋ ค ํ๋ค.
main.py์ ๊ณผ์ ์ฝ๋ ์์ฑํ๊ณ ์คํํด์ผํ๋ค.
์์ฑ ์๋ฃ ํ์๋ python3 main.py๋ก ์ฝ๋ ์คํ ํ ํฐ๋ฏธ๋์์ curl๋ช ๋ น์ด๋ก ํ ์คํธ ์งํ ํ ์ฝ๋ ์ ์ถ
์๊ตฌ ์กฐ๊ฑด
1. ์๋ฒ๋ ์ ์์ผ ๊ฒฝ์ฐ, 200 ๊ฐ ๋ฆฌํด
2. body๋ JSON ํํ์ด๋ฉฐ, `Content-Type`์ `application/json` ์ผ๋ก ์ค์
3. IP ์ฃผ์๋ 0.0.0.0, PORT๋ 5678
์ฒซ ๋ฒ์งธ ๋ฌธ์
0.0.0.0:5678 ๋ก ์ ๊ทผ ์ 200 ๊ฐ ๋ฆฌํด ๋ฐ jsonํํ๋ก "message" : "server check" ๊ฐ ์ผ๋ก ์๋ต
๋ ๋ฒ์งธ ๋ฌธ์
0.0.0.0:5678/sum ๋ก ์ ๊ทผ ์ 200๊ฐ ๋ฆฌํด ๋ฐ ์ฃผ์ด์ง ํ์ผ์ ์ฝ๊ณ ํด๋น ํ์ผ์์ post_count ํ๋์ ํฉ์ ๊ฐ ๋ฆฌํด
jsonํํ๋ก "sum" : 0000
0000์ ์์์ ์ซ์ ์.
๋ฌธ์ ํ์ด
์ฐ์ 0.0.0.0, 5678ํฌํธ๋ฅผ ๊ฐ์ง ์๋ฒ๋ฅผ ๋์ธ ์ ์๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
ํ์ด์ฌ์์ Flask ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๋ค.
requirements.txt
Flask
ํฐ๋ฏธ๋ ์ฐฝ์์ pip ๋ช ๋ น์ด๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
pip3 install -r requirements.txt
host 0.0.0.0, port 5678๋ก ๋์ธ ์ ์๋ ์ฝ๋ ์ด๋ค.
ํฐ๋ฏธ๋์์ python3 main.py ์ ๋ ฅ ์ ํด๋น ํธ์คํธ๋ ip๋ก ๋จ๋ ๊ฒ ํ์ธ ํ ์ ์๋ค.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
print("Hello World")
if __name__ == '__main__':
app.run(host='0.0.0.0',port=5678,debug=True)
curl -X GET 0.0.0.0:5678 -H 'Content-Type: application/json'
200๊ฐ๊ณผ message: server check ๋ฆฌํด ํ๋ ์ฝ๋ ์์ฑํ๋ค.
json๊ฐ์ผ๋ก ๋ฆฌํดํ๋ ๋ฐฉ๋ฒ์ ํ์ด์ฌ ํจ์ return ํ ๋, jsonify๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค.
200๊ฐ๋ ๋ค์ ์ถ๊ฐํ๋ฉด ์ด๋ ต์ง ์๊ฒ ํ์ด ํ ์ ์๋ค.
curl -X GET 0.0.0.0:5678/sum -H 'Content-Type: application/json'
200๊ฐ๊ณผ sum: ???? ๋ฆฌํด ํ๋ ์ฝ๋ ์์ฑํ๋ค.
์ฌ๊ธฐ์ jsonํ์ผ์ ์ฝ๊ณ ํ๋ ๊ฐ ์ค post_count ๊ฐ๋ง ๋์ ํ์ฌ ๊ตฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์ด๋ ๊ฒ ๋๋ค.
import json
post_count = 0
file_path = "./data/input/user.json"
with open(file_path, 'r', encoding="utf8") as file:
json_data = json.load(file)
for data in json_data:
post_count += (data['post_count'])
print(post_count)
ํด๋น ์ฝ๋๋ฅผ ์ ์ ํ main.py์ ์์ฑํ๋ฉด ๋๋ค.