LWC에서 REST를 통해 다른 Salesforce 조직 호출

Aug 21 2020

Javascript (fetch, xhr)를 사용하여 LWC에서 apex없이 (동일한 salesforce 조직에) 나머지 API 콜 아웃을 만들고 싶습니다. 콜 아웃을 만들기 위해 명명 된 자격 증명을 만들었습니다. 그리고 사용자가 로그인하지 않은 LWC에서 파일을 업로드하려고합니다. 힙 크기 문제로 인해 apex를 사용할 수 없습니다.

따라서 사용자 자격 증명이나 토큰없이 LWC JS에서 나머지 API 끝점을 호출하는 방법이 있습니까?

답변

arut Aug 21 2020 at 18:54

따라서 사용자 자격 증명이나 토큰없이 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을 사용할 필요는 없습니다.

YsrShk Aug 22 2020 at 00:14

특히 Salesforce에 대한 콜 아웃을 수행하려면 토큰이 있어야합니다.

이제 아래 방법을 따라 토큰을 JS에 저장 / 전달할 수 있습니다 (낮은 / 정점 방법 없음)-

  1. Apex에서 전달-간단한 문자열을 쉽게 전달할 수 있습니다. 트레일 헤드 링크
  2. VF 페이지에서 LWC 컴포넌트에 매개 변수로 전달되도록 할 수 있습니다.
<c:component-name sessionId ='{! sessionId }' />
  1. 쿠키에서 세션 ID를 가져올 수 있습니다-sid는 토큰 (sessionId)에 불과합니다.
  2. 호출자 컴포넌트에서 암호화하여 브라우저에 저장할 수 있습니다 (브라우저의 스토리지 API를 사용하여)- 권장하지 않습니다.