재귀 매핑을 flask_restplus
으로 정의하는 방법이 있습니다. 상황에 따라 최대 재귀 수준을 가정해야한다는 제약이 있습니다. 아담과 에바에게 연락하고 싶지 않을거야. 그렇지?
api.model
을 직접 사용하는 대신 해당 모델을 반복적으로 작성하고 각 재귀 호출에서 iteration_number 인수를 감소시키는 메소드를 작성하십시오.
def recursive_person_mapping(iteration_number=10):
person_json_mapping = {
'name': fields.String(),
'date_of_birth': fields.Date()
}
if iteration_number:
person_json_mapping['parents'] = fields.List(fields.Nested(recursive_person_mapping(iteration_number-1)))
return api.model('Person'+str(iteration_number), person_json_mapping)
는 함수 호출을 만들기 위해 기억, 이런 마샬, 당신의 방법을 장식 할 때 :
@api.marshal_with(recursive_person_mapping())
def get(self):
...
주를 괄호를!
swagger를 사용하는 경우 'Person'+str(iteration_number)
은 필수 항목입니다. iteration_number를 추가하지 않으면 순환 한계 초과로 끝나고 내부 서버 오류가 발생합니다. 비틀 거리지 않는 매퍼 (mapper)는 문제없이 잘 해낼 것입니다.
최대 재귀 수준을 임의로 가정 한 후 재귀 제한을 초과 한 경우 자동으로 관리자에게 알리는 것이 좋습니다. 이는 마샬 러 자체가 아니라 데이터를 준비하는 방법의 책임 일 수 있습니다.
출처
2017-10-04 10:13:07
bgw