2017-12-02 2 views
0

다른 서버에 GET 요청을하고이 응답을 클라이언트에 반환하려면 DRF를 사용하고 있습니다.Django - 다른 서버에서 응답을 serialize

내가 알고 싶은 것은 다른 서버의 응답에서 선택한 필드 만 클라이언트로 반환하는 방법입니다. 많은 개체와

{ 
"plans": [ 
    { 
"setup_fee": 500, 
"amount": 990, 
"code": "plano01", 
} 
{ 
"setup_fee:... 
"code": "plano02", 
}... 

배열 :

는 내가 가지고는이 같은 반응이다. 그리고이 같은 클라이언트 뭔가주고 싶은 :

{ 
    "plans": [ 
     { 
    "code": "plano01", 
    } 
    {"code": "plano02"... 

코드 필드.

Django/DRF로 이것을 수행하는 가장 좋은 방법은 무엇입니까?

답변

2

여기에 DRF 사용에 대한 중요한 점은 없습니다. JSON 형식으로 응답을 받고 있는데,이를 dict로 구문 분석하고 원하는 요소를 추출한 다음 다시 JSON으로 돌려 보내야합니다. DRF는 과도 할 것입니다. 보기는 간단히 다음과 같습니다.

def get_plan_codes(request): 
    data = requests.get('external_api...').json() 
    codes = [{'code': plan['code']} for plan in data['plans']] 
    data['plans'] = codes 
    return JsonResponse(data) 
+0

. 하지만 당신의 대답은 매우 도움이되었습니다, 감사합니다. – WilsonPena

0

나는 개인적으로 DRF를 사용할 것이라고 생각하지 않습니다.

나는 이것이 요청과 django 자체를 사용하여 상당히 직선적 인 foward 방식으로 수행 될 수 있다고 생각한다. 같은

뭔가 : 나는 클라이언트 측에서 민감한 HTTP 헤더 정보를 넣어 피하기 위해 또한 클라이언트가 전송하는 정보의 일부를 사용해야하기 때문에 내가 DRF를 사용하고

from django.http import JsonResponse, HttpResponse 

import json 
import requests 


def plans(request): 
    response = requests.get("my url for the request") 
    if response.status_code == 200: 
     json_content = json.loads(response.content) 
     # json_content is a python dictionary, so you can just postprocess the way you want it here 
     return JsonResponse(json_content) 
    else: 
     return #You will want to return an HttpResponse with the appropriate status code, see the docs below on that 
     # https://docs.djangoproject.com/en/1.11/ref/request-response/#django.http.HttpResponse.status_code 
+0

이것은 DRF 요청 내에서 요청을 사용하고있는 것입니다. 클라이언트의 정보 중 일부만 사용해야하고 다른 API의 정보도 사용해야하기 때문입니다. – WilsonPena

관련 문제