[GraphQL] GraphQL로 API 구현 예제 with python - 삭제
BackEnd

[GraphQL] GraphQL로 API 구현 예제 with python - 삭제

728x90

* 혹시 오류가 나거나 질문이 있으면 아래에 댓글을 달아주세요(오류코드 포함)

 

GraphQL로 생성하는 코드를 확인하려면 아래 링크를 클릭

https://zeuskwon-ds.tistory.com/76?category=1033905

 

[GraphQL] GraphQL로 API 구현 예제 with python - 생성

* 혹시 오류가 나거나 질문이 있으면 아래에 댓글을 달아주세요(오류코드 포함) GraphQL로 조회하는 코드를 확인하려면 아래 링크를 클릭 https://zeuskwon-ds.tistory.com/75?category=1033905 [GraphQL] GraphQL..

zeuskwon-ds.tistory.com

* 삭제코드는 생성코드에 이어서 작성합니다 위 링크에 있는 코드대로 셋팅되어 있어야 따라서 진행가능

 

GraphQL 예제 - 삭제(Delete) 기능

기존 REST API 구현된 방법으로는 model_id값을 파라미터로 받아서 해당 데이터를 DELETE 요청으로 처리 했었다.

 

정확한 기능은 DELETE 요청이 들어왔을 때 Model테이블에서 row를 삭제하는게 아닌 해당 데이터의 "del_yn"컬럼 값을 "True"로 변경해주는 기능이다.

 

이 기능을 GraphQL로 구현해 봄

  •  기능 : Model 테이블 "del_yn" True로 변경

* 아래에 있는 코드는 기존 코드 그대로 두고 추가하면 됨

1. GraphQL Mutation기능에 삭제 추가

▷ schema.graphql

type Mutation {
    createModel(
        model_id: String!, 
        model_nm: String!, 
        model_type: String, 
        model_cmmt: String,
        rgst_dt: String, 
        rgst_time: String, 
        rgstr_nm: String, 
        del_yn: Boolean
    ): ModelResult!
    
# 기존코드에서 추가한 부분----------------
     deleteModel(
        model_id: String!
    ): ModelResult!
# ---------------------------------------
}

2. Mutation Resolver 추가

▷ mutations.py

@convert_kwargs_to_snake_case
def delete_model_resolver(obj, info, model_id):
    try:
        model = Model.query.get(model_id)
        if model:
            model.del_yn = True
        db.session.add(model)
        db.session.commit()
        payload = {
            "success": True,
            "model": model.to_dict()
        }
    except AttributeError:  # todo not found
        payload = {
            "success": False,
            "errors": ["item matching id {id} not found"]
        }
    return payload

3. app 코드 추가

▷ app.py

rom api.mutations import create_model_resolver,delete_model_resolver

mutation.set_field("deleteModel", delete_model_resolver)
  • 실행
flask run
  • 확인

http://127.0.0.1:5000/graphql 로 접속해서 삭제할 model_id 입력 후 데이터 DELETE 쿼리 전송 

mutation DeletePost {
  deleteModel(model_id:"test2") {
    model {
      model_id
      model_nm
      model_type
      model_cmmt
      rgst_dt
      rgst_time
      rgstr_nm
      del_yn 
    }
    success
    errors
  }
}

이전 포스트에 생성했던 데이터 삭제 

정상적으로 실행되었음을 확인

체크 표시가 True라는 뜻이므로 DB데이터도 정상실행 완료

728x90