概要
この記事は初心者の自分がRESTfulなAPIとswiftでiPhone向けのクーポン配信サービスを開発した手順を順番に記事にしています。技術要素を1つずつ調べながら実装したため、とても遠回りな実装となっています。
前回の Djangoのテンプレート機能を使ってみるで作ったコードを改造して、JSON形式でレスポンスするようにします。Django Rest Frameworkという便利なフレームワークが存在しますが、まずは仕組みを理解するのを目的に Django Rest Framework 等は使わずに書いてみます。
参考
環境
Mac OS 10.15
VSCode 1.39.2
pipenv 2018.11.26
Python 3.7.4
Django 2.2.6
手順
- views.pyを修正
- 動作確認
views.pyを修正
データをjson形式に変換するためにjsonのモジュールをインポートします。
コードにimport json
を追加します。
json.dumps
を使って、構造体をインプットにしてjson形式の文字列を作成するプログラムを追加します。構造体を作るコードは元のコードのparams = { }
の部分をそのまま流用します。
json形式の文字列を作るコードを追加します。引数として構造体データのparams
を渡しています。
json_str = json.dumps(params, ensure_ascii=False, indent=2)
戻り値は、HttpResponse
メソッドで単純にJson形式の文字列を返すだけです。
return HttpResponse(json_str)
修正後のviews.py
はこちらです。
from django.shortcuts import render
from django.http import HttpResponse
import json #追加した
def coupon(request):
if 'coupon_code' in request.GET:
coupon_code = request.GET['coupon_code']
if coupon_code == '0001':
benefit = '1000円引きクーポン!'
deadline = '2019/10/31'
message = ''
elif coupon_code == '0002':
benefit = '10%引きクーポン!'
deadline = '2019/11/30'
message = ''
else:
benefit = 'NA'
deadline = 'NA'
message = '利用可能なクーポンが見つかりません'
params = {
'coupon_code':coupon_code,
'coupon_benefits':benefit,
'coupon_deadline':deadline,
'message':message,
}
#json形式の文字列を生成
json_str = json.dumps(params, ensure_ascii=False, indent=2)
return HttpResponse(json_str)
動作確認
コードを保存してdjangoのサーバを起動します。
ターミナルからcurlコマンドでhttp://127.0.0.1:8000/coupon/?coupon_code=0001
にアクセスすると、jsonで値が取得出来ています。
次はブラウザでhttp://127.0.0.1:8000/coupon/?coupon_code=0001
にアクセスすると、json形式のデータが表示されました。
以上です。