Call APIs from JavaScript — Overview

DEX475 - JavaScript

📄 第 157 页 🎬 视频课程

课程章节介绍

同学们,今天咱们来聊一个很实际的话题:在Lightning Web组件里怎么安全地调用外部API。这个话题涉及一个非常重要的安全机制,叫做,内容安全政策,,英文是Content Security Policy,简称CSP。 CSP其实是一个W3C标准,它的作用就像是给你的组件竖起了一道围墙,专门控制页面可以加载哪些外部资源。在Salesforce的Lightning平台上,这个CSP默认是非常严格的:它会,阻止所有向外部发起的API调用,,同时也,阻止WebSocket连接,。也就是说,如果你直接在组件里写一个fetch请求到某个外部网址,十有八九会被浏览器直接拦截掉。 那如果你想调用某个特定的外部API,该怎么办呢?你就需要把这个API的基础URL(比如 https://api.example.com )添加到Salesforce的设置里,作为一个,受信任的URL,。这个操作会修改CSP的响应头,明确告诉浏览器:“嗨,这个域名是安全的,可以放行。”这样你的组件才能顺利地和那个外部服务通信。 好,明白了安全的背景,我们再来看看最佳实践。如果我们的目标是访问Salesforce自己的数据,,首要选择,应该是,Lightning Data Service,,简称LDS。为什么?因为LDS构建在用户界面API之上,性能非常好,而且,自动帮我们处理了身份验证、缓存、数据共享规则,这些麻烦事。你完全不需要去手动维护访问令牌,代码也干净很多。 但总有LDS覆盖不到的场景,比如需要执行复杂的业务逻辑、跨对象的操作,或者需要调用不是标准CRUD的接口。这个时候,我们就得自己写,Apex类,了。记住,要用 `@AuraEnabled` 注解来标记这些Apex方法,这样它们才能在Lightning Web组件里被直接调用。所有对Salesforce内部API的复杂访问,都应该通过Apex来做,保证安全。 接下来,如果要调用,第三方的外部API,,就是Salesforce以外的服务,流程稍微复杂些。第一步还是刚才说的:把第三方API的基础URL添加为受信任URL。第二步,在组件中使用现代的,Fetch API,来发起HTTP请求。这是标准的Web技术,用起来很方便。 但是,这里有个,极其重要的大坑,,大家一定要避开:,永远不要把认证密钥、API秘钥、Token之类的敏感信息直接写在客户端的JavaScript代码里,。因为前端代码是可以被任何人查看的,你要是把密钥放在JS文件里,就等于把它公开发布了。正确的做法是:把真正的HTTP调用和身份验证逻辑都放到,Apex,中去做。你可以用Apex的 `HttpRequest` 类来构建请求,在服务端安全地附加认证信息,然后把结果返回给组件。这样外界永远接触不到你的密钥。 总结一下这节课的核心: - CSP默认会拦截外部调用,要用受信任URL来放行。 - 访问Salesforce数据时,优先用LDS,不行就上Apex。 - 调用第三方API时,前端用Fetch API发请求,但认证和安全逻辑一定要放在Apex里,绝对不要把密钥暴露在客户端。 好了,大家把这几个原则记牢,以后做集成的时候就能既高效又安全了。下节课我们讲具体的代码实现。

关键词

LWC Lightning Web Components Salesforce