<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.

며칠전에 한 빅수비 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