2017-11-29 16 views
0

내 symfony 프로젝트에서 일부 API를 구현하려고합니다. 현재 프로젝트에는 HTML 테이블, 폼/유효성 검사기 등을 기본으로하는 표준 컨트롤러가 많이 있습니다.api-platform에서 저장 작업을 만드는 방법

저는 API-platform 프로젝트에서 표준 휴식 API를 매우 쉽게 만들 수있는 방법을 찾고 있습니다. 그것이 내 생필품에 꼭 들어 맞습니다. POST/PUT/DELETE 부분에서는 엔터티에 대해 매우 기본적인 지속 작업을 수행합니다. 갑자기 내 프로젝트에서 엔티티 지속 후에 더 많은 작업을 수행해야합니다.

나는 문서를 빨간색했고 나는 그 작업을 수행하는 방법에 대한 정말 혼란 스러워요 ... 을 나는 두 가지 가능성을 참조 : 모든 개체

의 POST_WRITE 신청, 이벤트 시스템을 사용

  • 을 모든에 대한 사용자 지정 작업 만들기

  • /갱신/엔티티의 경우 모두에서

의 작업을 삭제 만들고, 나는 정말 높은 N있을 것입니다 프로젝트의 단일 액션이나 이벤트 구독자 수 (30/40). 유지 관리는 정말 불편합니다. 또한 이전 버전의 양식 시스템을 유지하기 위해 컨트롤러에 이미있는 것과 동일한 코드를 복제해야 API 형식으로 모두 다시 작성해야합니다.

이 문제에 접근하는 방법에 대한 제안 사항이 있으십니까?

FOSRestBundle에서와 같이 동일한 컨트롤러 동작을 사용하여 데이터를 수신하고 다양한 유효성 검사/지속/추가 작업을 수행 한 다음에 의해 관리되는 결과를 반환 할 수있는 방법이 없습니다. API- 플랫폼 이벤트?

표준 컨트롤러 동작에서 비 직렬화/직렬화, 필터 및 페이지 매김과 같은 API 플랫폼의 일부를 수동으로 호출하는 방법은 무엇입니까? 모든 환호에

감사 다니엘

답변

0

나는 완전히 질문을 이해하지 않으면 용서하지만 당신은 이미 컨트롤러에 기록하는 기능을 가지고 있고 당신은 API를 통해 어쩌면이 같은 행동에 액세스하려는 경우 각 액션마다 여러 경로를 설정할 수 있으며 액션 호출 방식에 따라 다르게 대응할 수 있습니다. 예를 들면 :

당신은 사용 된 경로를 평가하고 조치가 API를 통해 또는 정상적인 요청에서 호출 된 경우 다르게 기반으로 일을 처리 할 수있는 행동의 다양한 섹션에 있습니다
/** 
* @Route("/api/v1/tester", name="api_tester") 
* @Route("/tester", name="tester") 
*/ 
public function testerAction(Request $request) 
{ 
    $route = $request->attributes->get('_route'); 

    if($route == "api_tester") 
     #..do things the api way 
     response = array("success" => 1, "data" => $return_string); 
     return new Response(json_encode($response)); 
    } else { //non-api 
     $this->render('tester/basic.html.twig', array(); 
    } 
} 

.

+0

답변 주셔서 감사합니다. 나는 그것을 시도했으며 쉽게 FOSRestBundle로 할 수 있습니다. 다중 경로 및 직렬화를 관리하지만 필터링/쿼리 작성과 같은 것은 아닙니다. 이러한 유형의 작업을 수행 할 수있는 무언가를 찾으려면 API 플랫폼을 찾았습니다. 많은 흥미로운 작업을 수행하지만 mvc 논리의 일반 컨트롤러 대신 동작 및 이벤트 (adr)를 기반으로 다른 작업을 수행합니다. 나는 두 세계를 결합하는 방법을 이해하려고 노력하고 있었다 :) –