SOAP — Webservice Methods & WSDL Generation

DEX455 - Apex Web 服务完全指南:SOAP Web 服务与 Apex REST

📄 第 252 页 🎬 视频课程

课程章节介绍

同学们,咱们今天来讲讲,怎么把Apex类里的方法,变成一个可供外部调用的Web服务。这就要用到,webservice,这个关键字了。 你可以这样想:你写了一个很有用的方法,比如自动给客户发邮件,但外面的系统也想用这个功能,怎么办?就在这个方法前面加上,webservice,,它就成了一种叫“SOAP”的Web服务接口。外部的应用程序,不管是用Java、.NET还是别的语言写的,都能通过标准的SOAP协议来调用它,在Salesforce里帮你做事儿,比如创建个联系人、查一笔订单啥的。 那怎么对接呢?特别简单。你写好这个带webservice方法的类之后,进到Salesforce里这个类的详情页面,可以直接生成一个,WSDL文件,,也就是“Web服务描述语言”文件。你把这个文件丢给外部的开发小伙伴,他们用工具一导入,就能自动生成调用代码,基本不用手写,省时又省力。 不过这里有几个硬规矩,一定要记住: - 首先,包含webservice方法的这个类,必须声明为 ,global,,也就是全局的。要不外边根本看不见它。 - 其次,这些方法本身,必须是,静态的,,用`static`修饰。换句话说,调用时不用创建对象,直接类名.方法名就行。 - 再说个细节,,webservice,这个修饰符,它的可见性天生就是全局的。在Apex代码内部,任何能访问到这个类的代码,也都能直接调用这些方法,相当于自动拥有了“全局”权限。 最后,还有一个限制很重要——,webservice不能乱用,。你不能把它贴在类定义上,不能给内部类(也就是在一个类里面定义的类)的方法用,接口里不行,触发器里更不行。它就一个用途:,最外层类的静态方法,,仅此而已。 简单总结一下:想对外开放能力,就给外层类的静态方法加上webservice,类声明成global,然后生成WSDL文件交给外部系统,就搞定了。 是不是挺清晰的?

关键词

Apex Salesforce Developer Guide