1. 리소스

리소스는 URI로 식별한다.

Collection : 복수의 element

Element : 하나하나의 데이터

 

2. REST 

Representational State Transfer

  • 자원(Resource): URI
  • 행위(Verb): HTTP Method
  • 표현(Representations)

 

3. HTTP Method

REST를 지키면서 행위를 전달하는 방법

 

patch는 부분 수정이 가능하지만 put은 전체 데이터를 입력받아 덮어쓰므로  전송하지 않은 데이터는 삭제한다.


팀프로젝트 진행사항

프로필 수정기능을 구현해봤다.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
        crossorigin="anonymous"></script>
    <title>수정하기</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
    </script>
    <style>
        .container {
            justify-content: center;
            margin: auto;
            width: 50%;
            padding: 4rem;
        }
    </style>
</head>

<body>
    <div class="container">
        <form action="/update/{{ member['_id'] }}" method="post">
            <div class>
                <div class="input-group mb-3">
                    <label class="input-group-text" for="size">사진</label>
                    <input name="img_give" type="url" class="form-control" />
                </div>
                <div class="input-group mb-3">
                    <span class="input-group-text">이름</span>
                    <input name="name_give" value="{{ member['name']}}" class="form-control" />
                </div>
                <div class="input-group mb-3">
                    <span class="input-group-text">블로그 주소</span>
                    <input name="blog_give" value="{{ member['blog']}}" class="form-control" />
                </div>
                <div class="input-group mb-3">
                    <label class="input-group-text" for="size">MBTI</label>
                    <input name="mbti_give" value="{{ member['mbti']}}" type="text" class="form-control" />
                </div>
                <div class="input-group mb-3">
                    <label class="input-group-text" for="size">장점</label>
                    <input name="merit_give" value="{{ member['merit']}}" type="text" class="form-control" />
                </div>
                <div class="input-group mb-3">
                    <label class="input-group-text" for="size">자기소개</label>
                    <input name="desc_give" value="{{ member['desc']}}" type="text" class="form-control" />
                </div>
            </div>
            <div class="d-flex justify-content-around">
                <button type="submit" class="btn btn-light">수정</button>
                <a href="/view/{{ member_id['_id'] }}"><button class="btn btn-light">취소</button></a>
            </div>

        </form>
    </div>

</body>

</html>
#수정
@app.route("/update/<id>", methods=["GET"])
def update_get(id):
    find_member = db.members.find_one({"_id": ObjectId(id)})
    find_member['_id'] = str(find_member['_id'])
    find_id = db.members.find_one({'_id' : ObjectId(id)},{'id':True})
    return render_template('update.html', member=find_member, member_id=find_id)

@app.route("/update/<id>", methods=["POST"])
def update_post(id):
    name_receive = request.form['name_give']
    blog_receive = request.form['blog_give']
    mbti_receive = request.form['mbti_give']
    img_receive = request.form['img_give']
    desc_receive = request.form['desc_give']
    merit_receive = request.form['merit_give']

    find_member = db.members.find_one({"_id": ObjectId(id)})
    find_member['_id'] = str(find_member['_id'])

    db.members.update_one({'_id': ObjectId(id)},{'$set':{'name':name_receive}})
    db.members.update_one({'_id': ObjectId(id)},{'$set':{'blog':blog_receive}})
    db.members.update_one({'_id': ObjectId(id)},{'$set':{'mbti':mbti_receive}})
    db.members.update_one({'_id': ObjectId(id)},{'$set':{'img':img_receive}})
    db.members.update_one({'_id': ObjectId(id)},{'$set':{'desc':desc_receive}})
    db.members.update_one({'_id': ObjectId(id)},{'$set':{'merit':merit_receive}})

    return redirect('/view/'+id)

put 방식을 이용해 업데이트 기능을 구현해보고 싶었는데 form에서는 put을 지원하지 않아 post방식으로 구현했다. 다른 방법을 생각해봐야 될 것 같다.

'TIL > WEEK1' 카테고리의 다른 글

WEEK 1. 드디어 첫 프로젝트 끝!  (0) 2023.05.19
WEEK1. POST와 PUT의 차이점  (0) 2023.05.18
WEEK1. PUT방식으로 수정기능 구현  (0) 2023.05.17
WEEK1. Git  (0) 2023.05.15

+ Recent posts