<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.
며칠전에 한 빅수비 API 만들기를 완성했다.
다음은 빅수비API 의 코드다.
from flask import Flask, jsonify, request
app = Flask(__name__)
git_id = 'mingtian_chan'
weapon_lst = [
{'id' : 1 ,'name' : 'sword', 'stock' : 3},
{'id' : 2 ,'name' : 'Ak -47', 'stock' : 10},
{'id' : 3 ,'name' : 'granade', 'stock' : 2},
]
@app.route('/') # 홈디렉토리에 접근할경우
def hello_flask():
return 'HELLO VICSUBI'
# Get / Git user name
@app.route('/whoami')
def get_whoami():
return jsonify({"name": git_id})
# Get / Echo
@app.route('/echo')
def echo():
echo_msg = request.args.get('value')
return jsonify({"value" : echo_msg})
# Read => 아무것도 필요없음
@app.route('/weapon', methods = ['GET'])
def read_weapon():
return jsonify(weapon_lst)
# Create => body에 내용이 필요함
@app.route('/weapon', methods = ['POST'])
def create_weapon():
request_data = request.get_json()
new_weapon = {
"id" : len(weapon_lst) + 1 ,
"name" : request_data['name'],
"stock" : request_data['stock'],
}
weapon_lst.append(new_weapon)
return jsonify(new_weapon)
# Update => 주소창에 값을 넣고, body에도 넣음
@app.route('/weapon/<int:id>', methods = ['PUT'])
def update_weapon(id):
request_data = request.get_json()
for weapon in weapon_lst:
if weapon['id'] == id:
weapon['name'] = request_data['name']
weapon['stock'] = request_data['stock']
return jsonify(weapon_lst)
#Delete => 주소창에만 값을 넣으면 됨
@app.route('/weapon/<int:id>', methods = ['DELETE'])
def delete_weapon(id):
for weapon in weapon_lst:
if weapon['id'] == id:
weapon_lst.remove(weapon)
return jsonify(weapon_lst)
if __name__ == '__main__':
app.run()
빅수비 만들기 끝.
다음은 빅스비 코드에 대한 간단한 설명이다.
- get /whoami
- 나의 github id 를 반환합니다.
- 입력주소 : /whoami
- 실행결과 :
{ "name": "mingtian_chan" }
- get /echo
- querystring인 '?value = '뒤에 한 말을 따라합니다. (querystring은 ?ㅇㅇㅇ = ㅇㅇㅇ & ㅌㅌㅌ = ㅌㅌㅌ)이런애임
- 입력주소 : /echo?value = hi
- 실행결과 :
{ "value": "'hi'" }
- Read (GET)
- 빅스비가 가진 무기를 알려줍니다.
- 입력주소 : /weapon
- method = GET
- 실행결과 :
[ { "id": 1, "name": "sword", "stock": 3 }, { "id": 2, "name": "Ak -47", "stock": 10 }, { "id": 3, "name": "granade", "stock": 2 }, ]
- Create (POST)
- 빅스비에게 새로운 무기를 쥐어줍니다.
- 입력주소 : /weapon
- method : POST
- body에 들어 갈 내용:
{ "name" : "Chicken" , "stock" : 5 }
- 실행결과:
{ "id": 4, "name": "Chicken", "stock": 5 }
- Update (Put)
- 빅스비의 무기를 업데이트합니다.
- 입력주소 : /weapon/2(원하는 무기의 id)
- method : PUT
- body에 들어갈 내용 :
{ "name" : "Chicken" , "stock" : 5 }
- 실행결과 :
[ { "id": 1, "name": "sword", "stock": 3 }, ### 바뀐부분 { "id": 2, "name": "Chicken", "stock": 5 }, ### { "id": 3, "name": "granade", "stock": 2 }, { "id": 4, "name": "Chicken", "stock": 5 } ]
- Delete(Delete)
- 빅스비의 무기를 삭제합니다.
- 입력주소 : /weapon/2(원하는 무기의 id)
- method : DELETE
- 실행결과 :
[ ### id : 1이 사라짐 ### { "id": 2, "name": "Chicken", "stock": 5 }, { "id": 3, "name": "granade", "stock": 2 }, { "id": 4, "name": "Chicken", "stock": 5 } ]
git commit -m 뒤에는 '' 가 아니라 "" 이다
평소에 ' 와 " 를 구분안하던 나에겐 뭐가 잘못되었지 하면서 엄청 헤멨던 부분.
+ Flask에서는 html method를 GET, POST, PUT, DELETE 를 모두 지원한다. html 에서는 POST와 GET만 지원함
실제로 코드 짜면서, 또 올리면서 많이 배운 날!

드디어 TIL이 2주차가 되었다. 코딩실력이 갑자기 확 늘었단 생각은 들지않지만, 꾸준히 하다보면 언젠가 나도 코딩을 잘 할 수 있겠찌!
'TIL > [겨울방학 부트캠프]TIL' 카테고리의 다른 글
TIL 16일차 (22.01.22) (0) | 2022.01.23 |
---|---|
TIL 15일차 (22.01.20) (0) | 2022.01.21 |
TIL 13일 (22.01.18) (0) | 2022.01.18 |
TIL 12일차 (22.01.17) (0) | 2022.01.18 |
TIL 11일차 (22.01.16) (0) | 2022.01.17 |