Flask RESTful API - DELETE /stores/{store_id} (매장정보삭제)

2019. 7. 3. 16:12Python/Flask

반응형

DELETE /stores/<int:store_id>

매장 정보 삭제

Resource URL

http://localhost:5000/stores/<int:store_id>

Request 

http://localhost:5000/stores/<int:store_id>

소스코드 작성

소스코드 작성은 다음과 같이 작성한다.
  • Model 파일에 매장상세정보 조회 메소드 추가
  • Resource 파일에 매장상세정보 조회 메소드 추가
  • app.py 매장상세정보 Resource 정보 등록

store.py - Model

@classmethod
def delete_by_store_id(self, store_id):
	db.session.query(self).filter_by(store_id=store_id).delete(synchronize_session=False)
	db.session.commit()


store.py - Resource


"""
DELETE /store/<int:store_id> - 매장 상세 정보 조회
"""
class StoreRemove(Resource):
    def delete(self, store_id):
        # 매장 상세 정보 조회
        store = StoreModel.find_store_by_store_id(store_id)

        # 매장명 설정
        store_name = store.store_name

        # 매장 상세 정보 삭제
        StoreModel.delete_by_store_id(store_id)

        return {'message':'{} 매장 정보가 삭제 되었습니다.'.format(store_name)},201


app.py


import os
import psycopg2

from flask import Flask
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy

from config import app_config

from resources.store import StoreRegister,StoresRegister,Stores,Store,StoreRemove

# set_env.bat 에서 설정한 application 이름 설정
app = Flask(os.getenv('FLASK_APP'))

# set_env.bat 에서 설정한 FLASK_ENV는 development
env_name = os.getenv('FLASK_ENV')
"""
app_config 는 config.py 에서 정의 app_config 이면 위에서 development를 설정하였기
때문에 config.py 의 Development 클래스의 정보가 설정 되게 된다.
"""
app.config.from_object(app_config[env_name])

# 데이터 변경사항에 대해 커밋 전후로 알림 여부
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# Query Debug 여부
app.config['SQLALCHEMY_ECHO'] = False


"""
API Resource 등록
---------------------------------------------------------
POST /stores/create - 매장 등록
PATCH /stores - 벌크 매장 등록
GET /stores - 매장목록 조회
GET /stores/<int:store_id> - 매장정보수정
DELETE /stores/<int:store_id>- 매장정보삭제
"""
api = Api(app)
api.add_resource(StoreRegister, '/stores/create')
api.add_resource(StoresRegister, '/stores')
api.add_resource(Stores, '/stores/search')
api.add_resource(Store, '/stores/<int:store_id>')
api.add_resource(StoreRemove, '/stores/<int:store_id>')

if __name__ == "__main__":
    from db_init import db
    db.init_app(app)
    app.run(debug=True,port=5000)


테스트


istarbucks_api.zip


반응형