GitHub

https://github.com/Choidongjun0830

API 4

API 예외 처리

API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. 스프링 부트가 제공하는 BasicErrorController는 HTML 페이지를 제공하는 경우에는 편리하지만, API 오류 처리는 각각의 컨트롤러나 예외마다 서로 다른 응답 결과를 출력해야 할 수도 있기 때문에 복잡하다. 'IllegalArgumentException'이 일어나고 아무런 처리를 안해주면 500 에러가 발생하는데 이것을 400에러로 바꾸어 주려면 'ExceptionResolver'를 활용해야 한다. HandlerExceptionResolver 활용 예외 상태 코드 반환 예외를 response.sendError(xxx)로 변경해서 서블릿에서 상태 코드에 따른 오류를 처리하도록 함 이후 WAS는 서..

Spring 2024.01.13

노마드 코더 에어비앤비 클론 코딩 #16 API TESTING

API Testing: 우리 코드에서 발생할 수 있는 모든 케이스를 작성해놓고 명령어 하나로 테스트하는 것이다. 그 명령어인 'python manage.py test'를 입력하면, 파이썬은 내가 작성한 모든 테스트를 실행한다. APITestCase class 안에 있는 테스트 메소드 명명 규칙: 만약 django가 내 코드를 테스트해주기를 바란다면, 그 테스트 코드는 반드시 'test_'로 시작하는 메소드 안에 작성되어야 한다. 'self.client...'는 우리의 API로 get/post/put/delete request 등을 보낼 수 있게 해준다. 'python manage.py test'는 우리가 만들어둔 DB에서 일어나는게 아니라 새로운 DB를 만들어서 실행하고 테스트가 끝나면 새로 만들어진 D..

노마드 코더 에어비앤비 클론 코딩 #11 Rest API - 2

SerializerMethodField: Serializer에 커스텀 필드를 추가하는 방법이다. #내 room의 평균 리뷰 점수가 몇인지 #rooms. serializers.py class RoomDetailSerializer(ModelSerializer): owner = TinyUserSerializer(read_only = True) #users.serializers.py에서 만든 serializer amenities = AmenitySerializer(read_only=True,many=True) category = CategorySerializer(read_only=True) rating = serializers.SerializerMethodField() #SerializerMethodField로..

노마드 코더 에어비앤비 클론 코딩 #10 Django Rest Framework

@api_view() 유저에게 HttpResponse를 전달하면 안되고, JSON을 전달해야한다. Json에서는 'return JSONResponse({"categories":all_categories})'처럼 변수를 보내면 오류가 난다. 그래서 QuerySet을 JSON포맷으로 변환해야한다. Django Rest Framework를 사용하여 변환할 수 있다. #예 from rest_framework.response import Response from .models import Category @api_view() def categories(request): return Response(...) Serializer: python말로 Django말을 JSON으로 바꿔주고, 반대로 JSON을 Django말..

728x90