>  Q&A  >  본문

Symfony 5.4용 Rest API 작업에서 요청 매개변수를 필터링/위생화/검증하는 방법

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

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

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

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

으아악

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

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

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

전체 엔드포인트 코드:

$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粉617237727P粉617237727280일 전489

모든 응답(1)나는 대답할 것이다

  • P粉635509719

    P粉6355097192023-12-19 16:22:56

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

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

    으아악

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

    으아악

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

    으아악

    그런 다음 확인하세요.

    으아악

    회신하다
    0
  • 취소회신하다