Symfony 5.4용 Rest API 작업에서 요청 매개변수를 필터링/위생화/검증하는 방법
P粉617237727
P粉617237727 2023-12-18 18:58:41
0
1
571

저는 Symfony 5.4를 처음 접했고 최근에 이 버전을 사용하여 첫 번째 API를 만들었습니다

내 특정 API 엔드포인트의 경우 매개변수 중 하나가 ID 배열입니다.

다음을 통해 배열의 유효성을 검사해야 합니다.

  • 이것이 배열인지 확인하세요.
  • 배열의 ID가 실제로 데이터베이스 레코드를 참조하는지 확인하세요.

타입 캐스팅과 기존을 사용하여 엔터티를 유지하기 전에 배열을 확인하는 간단한 방법으로 구현했습니다. Repository:

으아악

그러나 이로 인해 내 컨트롤러 동작이 너무 "신체 긍정적"이 되어 더 우아한 방식으로 구현될 수 있는 것처럼 느껴집니다.

Symfony 5.4 문서에서 아무것도 찾을 수 없습니다.

현재 다음 사항을 알고 싶습니다.

  • Symfony에는 요청 매개변수를 필터링/정리하는 방법이 있습니다.
  • 요청 매개변수에 사용자 정의 유효성 검사기 제약 조건을 적용하는 우아한 기본 제공 방법이 있습니다(잘 문서화된 엔터티 필드 유효성 검사와 유사).
전체 엔드포인트 코드:

$parentPropertyIds = (array)$request->request->get('parent_property_ids');
if ($parentPropertyIds) {
   $parentCount = $doctrine->getRepository(Property::class)->countByIds($parentPropertyIds);

   if ($parentCount !== count($parentPropertyIds)) {
       return $this->json([
            'status'  => 'error',
            'message' => 'parent_property_id_invalid'
       ], 422);
   }

   foreach ($parentPropertyIds as $parentPropertyId) {
      $parentProperty = $doctrine->getRepository(Property::class)->find($parentPropertyId);
      $property->addParent($parentProperty);
   }
}

P粉617237727
P粉617237727

모든 응답(1)
P粉635509719

DTO(데이터 전송 개체)를 인증 서비스와 결합할 수 있습니다. 미리 정의된 제약 조건이 많거나 사용자 지정 제약 조건을 만들 수 있습니다.

예를 들어 간단한 제약 조건을 주석으로 사용하는 방법은 다음과 같습니다.

으아악

그런 다음 DTO에 데이터를 할당합니다.

으아악

어떤 경우에는 DTO에서 생성자를 정의한 다음 에서 를 요청하고 즉시 DTO에 전달하는 것이 더 좋습니다.

으아악

그런 다음 확인하세요.

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿