🔥TIL#9. RESTful API


Today I learned
  • Restful APIとは?
  • query parameter
  • path parameter
  • 注意事項
  • 1. Restful API
    API伝送されるリソースはURIとして表され、そのリソースに対する意図はHTTPメソッドとして定義される.
    2. query parameter
    GETメソッドに対応するurlのフィルタリングとページング結果を受信する場合は、を使用します.主に無限スクロール画面で使用されます.
    GET http://localhost:8000/places?id=1&region=서울		# filtering
    GET http://localhost:8000/places?offset=0&limit=100		# paging
    django viewでは、次のように処理されます.
    class PlacesView():
    	def get(self, request):
        		id    	= request.GET.get(id, None)
            	region	= request.GET.get(region, None)
                	offset 	= request.GET.get(offset, None)
                    limit	= request.GET.get(limit, None)
    価値があると判断したらrequest.GET["id"]方式も利用可能です.
    3. path parameter
    1つのリソースのGET、PATCH(update)、およびDELETEメソッドで使用されるURL.
    http://localhost:8000/place/places/1
    http://localhost:8000/place/places/원룸
    django viewでは、次のように処理されます.
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('/places/<int:place_id>', views.GetDetailPlaceView),    
        path('/places/<str:category>', views.GetPlaceWithCategoryView),    
    ]
    これに対してViewsで扱うコードを以下に示す.
    class GetDetailPlaceView():
    	def get(self, request, place_id):
        		place = Place.objects.filter(id=place_id)
                	return JsonResponse({"place":place.values()}, status=200)
    
    class GetPlaceWithCategoryView():
    	def get(self, request, category):    		    		
                categories = Category.objects.prefetch_related('place_set').all()
    
                places = [category.place_set.values() for category in categories]
                return JsonResponse({"place":places}, status=200)
    url parameter方式を使用する場合は、get、postメソッドのパラメータにurls宣言の変数名を追加するだけです.
    4.注意事項
  • urlは、リソースを基準にする必要があります.
  • の方法があり、動詞を使わない.(悪い例./get places)