API-app를 올바르게 구성하는 것과 관련된 몇 가지 기본적인 질문이 있습니다. 일반적인 질문이지만 Laravel을 사용하는 것이 중요 할 수도 있습니다. 다음과 같이Laravel로 API-app를 올바르게 구성하는 방법
내 구조는 다음과 같습니다 컨트롤러 클래스 내에서 다른 방법을 가리키는 엔드 포인트와
가- 휴지 API를. 전달 된 개체의 형식은 Request입니다.
- 컨트롤러 클래스는 모든 유효성 검사 (validate-methods를 통해), 권한 부여 (gate를 통해) 및 데이터베이스에서 각 모델 가져 오기 (요청의 id 기반)를 수행합니다. 모델이없는 경우 오류를 반환합니다. 마지막으로 컨트롤러는 모델 객체를 전달하면서 내 서비스 클래스 내의 해당 메소드를 호출합니다.
- 이제 서비스 클래스는 모델 인스턴스에서 다른 작업 (예 : 사용자 이름 업데이트)을 수행하고 업데이트 (Eloquent 사용)를 유지 한 다음 마지막으로 업데이트 된 모델 인스턴스를 컨트롤러에 반환합니다.
- 컨트롤러는 반환 된 객체를 json 응답으로 "래핑 (wrap)"하여 클라이언트에 반환합니다 (단지 성공 또는 ID를 반환하는 대신 전체 업데이트 된 객체를 반환하는 것과 같습니다).
내 질문과 문제 :
- 내 코드의 조직이 됐나요?
- 명시된 바와 같이 유효성 검사 오류 등이 내 컨트롤러에서 발생합니다. 그러나 내 서비스에서 문제가 발생하면 (즉, 아래로) 어떻게됩니까? 컨트롤러에 뭔가 잘못되었다는 사실을 어떻게 알릴 수 있습니까? 예를 들어 JSON 응답을 클라이언트에 403 반환 할 수 있도록하려면 어떻게해야합니까? 예 : 내 UserService가 이메일 주소를 업데이트하려고합니다. 그러나이 이메일에는 이미 항목이 있으므로 서비스에서 오류를 컨트롤러로 반환해야합니다. 그러면 컨트롤러에 403 json 인코딩 오류 메시지가 클라이언트에 반환됩니다.
- 앞에서 설명한대로 모든 유효성 검사, 인증 등은 내 컨트롤러에서 수행됩니다. 컨트롤러 메소드는 특히 http 요청에 대해 만들어 지므로 Request 객체를 입력으로 사용하고 json을 반환합니다. 다른 컨트롤러에서와 같이 내 앱에서 직접 이러한 메서드를 호출하려면 어떻게해야합니까? 각각의 Service 클래스를 직접 호출하면 컨트롤러 내에서 수행되는 모든 유효성 검사와 검사를 통해 이익을 얻을 수 없습니다. 그러나 컨트롤러를 호출하면 요청 객체를 입력으로 간주하고 Json http 응답을 반환합니다.이 응답은 분명히 다른 컨트롤러에서 호출 할 때 원하지 않습니다. 어떻게해야합니까?
내 문제가 충분히 명확 해지기를 바랍니다. 어떤 도움을 주셔서 감사합니다.
덕분에, 마이클
대단히 감사합니다. 정확하게 답변을 얻으려고했습니다. 질문이 생길 경우를 대비하여 다시 시도해 볼 것입니다! 고마워!!! – michimaxi