728x90
* 혹시 오류가 나거나 질문이 있으면 아래에 댓글을 달아주세요(오류코드 포함)
GraphQL로 생성하는 코드를 확인하려면 아래 링크를 클릭
https://zeuskwon-ds.tistory.com/76?category=1033905
* 삭제코드는 생성코드에 이어서 작성합니다 위 링크에 있는 코드대로 셋팅되어 있어야 따라서 진행가능
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
'BackEnd' 카테고리의 다른 글
[GraphQL] GraphQL기술 회고 및 결론 (0) | 2022.06.30 |
---|---|
[GraphQL] GraphQL로 API 구현 예제 with python - 생성 (0) | 2022.06.30 |
[GraphQL] GraphQL로 API 구현 예제 with python - 조회 (0) | 2022.06.30 |
[GraphQL] GraphQL의 구조 및 쿼리 (0) | 2022.06.30 |
[GraphQL] GraphQL의 개념과 장단점 2 (0) | 2022.06.27 |