DjangoでREST APIを簡単につくるためのライブラリは、django-tastypie以外にDjango REST framework(以下rest_framework)というのもある。
Django REST framework
これとbpmappersを組み合わせて使う方法を調べたのでまとめる。
rest_frameworkモジュールのソースコードを読んだところ、rest_framework.serializersはbpmappersとほぼ同等の処理を行っている。
そのため、bpmappersを使わずにrest_framework.serializersですべて実装してしまっても良いと思う。
今回はあえてそれをしない。
試したコード
models.py
from django.db import models class Item(models.Model): name = models.CharField(max_length=20) price = models.PositiveIntegerField()
myapp/mappers.py
idをitem_idに、nameをitem_nameにマッピングする。
from bpmappers import Mapper, RawField class ItemMapper(Mapper): item_id = RawField('id') item_name = RawField('name')
myapp/views.py
views.pyではrest_frameworkのapi_viewデコレータとResponseクラスを使う。
引数にシリアライズした辞書を渡せば良いので、ここでas_dictの結果を指定する。
# coding: utf-8 from rest_framework.decorators import api_view from rest_framework.response import Response from myapp.models import Item from myapp.mappers import ItemMapper @api_view(['GET']) def item_list(request): items = Item.objects.all() return Response(ItemMapper(item).as_dict() for item in items)
myproject/urls.py
from django.conf.urls import patterns, include, url urlpatterns = patterns('', url(r'^items/', 'myapp.views.item_list'), )