LWC에서 REST를 통해 다른 Salesforce 조직 호출
Javascript (fetch, xhr)를 사용하여 LWC에서 apex없이 (동일한 salesforce 조직에) 나머지 API 콜 아웃을 만들고 싶습니다. 콜 아웃을 만들기 위해 명명 된 자격 증명을 만들었습니다. 그리고 사용자가 로그인하지 않은 LWC에서 파일을 업로드하려고합니다. 힙 크기 문제로 인해 apex를 사용할 수 없습니다.
따라서 사용자 자격 증명이나 토큰없이 LWC JS에서 나머지 API 끝점을 호출하는 방법이 있습니까?
답변
따라서 사용자 자격 증명이나 토큰없이 LWC JS에서 나머지 API 끝점을 호출하는 방법이 있습니까?
아니
apex에서는 아래 코드 스 니펫에 표시된대로 명명 된 자격 증명 콜 아웃을 만듭니다.
HttpRequest req = new HttpRequest();
req.setEndpoint('callout:My_Named_Credential/some_path');
이는 객체 의 setEndpoint
메소드가 HttpRequest
명명 된 자격 증명을 식별하고 요청과 함께 인증 토큰을 전달하는 책임 이 있음을 의미합니다 .
Fetch
& XmlHttpRequest
는 Javascript 기반 WebAPI이며 Salesforce에서 유지 관리하지 않습니다. 이는이를 사용할 때 인증 매개 변수를 직접 처리 / 전달해야 함을 의미합니다. 게다가 이러한 API 중 하나를 사용하여 클라이언트 측 웹 요청을하는 경우 코드가 Salesforce 서버 (명명 된 자격 증명을 유지 관리)에 전혀 도달하지 않습니다.
참고 : apex 코드를 호출하고 웹 요청을 생성하는 일반 LWC 유틸리티를 작성할 수 있지만 fetch 또는 xhr을 사용할 필요는 없습니다.
특히 Salesforce에 대한 콜 아웃을 수행하려면 토큰이 있어야합니다.
이제 아래 방법을 따라 토큰을 JS에 저장 / 전달할 수 있습니다 (낮은 / 정점 방법 없음)-
- Apex에서 전달-간단한 문자열을 쉽게 전달할 수 있습니다. 트레일 헤드 링크
- VF 페이지에서 LWC 컴포넌트에 매개 변수로 전달되도록 할 수 있습니다.
<c:component-name sessionId ='{! sessionId }' />
- 쿠키에서 세션 ID를 가져올 수 있습니다-sid는 토큰 (sessionId)에 불과합니다.
- 호출자 컴포넌트에서 암호화하여 브라우저에 저장할 수 있습니다 (브라우저의 스토리지 API를 사용하여)- 권장하지 않습니다.