【Python/Django】JSON 형식으로 응답을 하는 webAPI를 작성한다

개요



 이 기사는 초보자 자신이 RESTful API와 swift로 iPhone 용 쿠폰 전달 서비스를 개발한 절차를 차례로 기사로하고 있습니다. 기술 요소를 하나씩 조사하면서 실장했기 때문에 매우 먼 실장이 되고 있습니다.

 전회의 장고의 템플릿 기능 사용하기 로 만든 코드를 개조해, JSON 형식으로 응답하도록(듯이) 합니다. Django Rest Framework라고 하는 편리한 프레임워크가 존재합니다만, 우선은 구조를 이해하는 것을 목적으로 Django Rest Framework 등은 사용하지 않고 써 봅니다.

참고



파이썬 장고 입문 (6)

환경



Mac OS 10.15
VSCode 1.39.2
pipenv 2018.11.26
파이썬 3.7.4
장고 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 는 이쪽입니다.

    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)
    

    동작 확인



    코드를 저장하고 장고 서버를 시작합니다.

    터미널에서 curl 명령으로 http://127.0.0.1:8000/coupon/?coupon_code=0001에 액세스하면 json에서 값을 얻을 수 있습니다.


    다음은 브라우저에서 http://127.0.0.1:8000/coupon/?coupon_code=0001에 액세스하면 json 형식의 데이터가 표시되었습니다.


    이상입니다.

    다음 번에는 쿠폰 정보를 응답하는 앱 측 구현 (swift)

    좋은 웹페이지 즐겨찾기