이제 이제까지 짠 order, shop API가 잘 작동하는지 알아보겠습니다.
GET /api/order
아직 아무것도 추가 안해주었으므로 빈 배열이 나타납니다.
POST /api/shop
GET /api/shop
다음과 같이 추가된 shop이 잘 확인됩니다.
그리고 만약에 잘못된 field를 넣게되면 어떻게 될까요?
POST /api/shop
다음과 같이 json형태로 딱 떨어지게 오류가 표시됩니다.
그리고 pk를 통해 id=1인 가게를 가져와 보도록 하겠습니다.
GET /api/shop/1
네 잘 작동합니다.
그리고 PUT을 통해 데이터 업데이트가 잘 동작하는지 확인해보도록 하겠습니다.
PUT /api/shop/1
이도 잘 동작함을 확인할 수 있습니다.
마지막으로 삭제까지 잘 되는지 확인하겠습니다.
DELETE /api/shop/1
네 완벽히 다 잘 동작합니다.
마찬가지로 order에 대해서도 간단히 몇개만 테스트 해보겠습니다.
POST / api/order
우리는 아시다 싶이, order는 외래키로 shop의 pk를 참조합니다. 하지만 우리는 1번 shop을 지웠습니다. 따라서 이를 추가할 순 없습니다. 또한 여기서 order_date즉 데이터 포멧이 맞지 않는다고 뜨는데, 이는 조금있다가 처래해주겠습니다.
다음과 같이 임의로 2번 shop을 추가하고 넣었더니 order_date오류만 뜨는 걸로 바뀌었습니다.
/user_order/model.py
from django.db import models
class Shop(models.Model):
shop_name = models.CharField(max_length=20)
shop_address = models.CharField(max_length=40)
class Order(models.Model):
shop = models.ForeignKey(Shop, on_delete=models.CASCADE)
# 현재 시간으로 자동으로 삽입하게 바꿈
order_date = models.DateTimeField('date ordered', auto_now_add=True)
address = models.CharField(max_length=40)
deliver_finish = models.BooleanField(default=0)
다음과 같이 order_date에 auto_now_add=True로 주어 자동으로 현제 시간을 넣도록 바꾸었습니다.
네 잘 넣어지는 것을 확인할 수 있습니다.
이 외에도 pk를 이용하여 확인하고, 수정을 하고 전체 목록을 확인해보는 작업을 간단히 해보겠습니다.
GET / api/order/1
PUT / api/order/1
GET / api/order
다음과 같이 다 잘 동작합니다.
하지만 여기서 끝이 아닙니다. 우리가 유저가 주문하고 가게를 조회하는 등의 작업은 여기서 Django를 이용해서 하나의 서비스를 구축했습니다. 하지만 배달기사님이 확인하고, 배달기사님이 배달완료 버튼을 누르는 과정은 추후에 Flask로 구현할 겁니다.
근데 Flask에도 주문을 확인하기 위한 order데이터베이스가 여기 Django와 같이 있을겁니다. 그래서 이 둘간의 싱크를 맞추어 주는 작업을 해주어야 합니다.
나중에 Flask로 다 구현을 하고, Django로 돌아와서 RabbitMQ를 활용하여 이를 해결해 보도록 하겠습니다.