EGL调用第三方Service
Web服务是一种很重要的网络资源部署方式。 EGL当然也支持这种方式。 通过EDT开发环境的支持,你可以轻松的编写EGL程序来创建支持Web服务的应用。
同时,Google,雅虎等众多公司也对外发布很多有用的第三方Web服务。EGL语言同样可以很好的支持这些第三方服务。本文将着重介绍如何用EDT开发环境来快速开发支持第三方服务调用的EGL程序。
为第三方服务创建Record
REST Web服务的数据格式支持两种协议。XML数据格式和JSON数据格式。如果数据返回类型是XML数据格式, 那么就需要您更通过“Record from JSON”方式来创建Record。 而JSON数据格式则需要使用“Recordfrom JSON”。 因为这两种Record创建方式在界面上基本相同, 所以这里我们使用“Record from JSON” 模式来作为示例。
1. 通过右键Project或者Package节点à New à Record 来打开“New EGLRecord”向导。
2. 填写向导中的EGL Record页面

“Source folder”一栏将会自动填充为打开向导时点击项目的EGLSource文件夹。你也可以通过点击右侧的“Browse”按钮来修改目标文件夹。
“Package” 一栏将会自动填充为打开向导时点击的Package。如果打开向导时点击的是Project节点,那么这一栏将会是空的。你同样可以通过点击右侧的“Browse”按钮来修改目标Package。如果这一栏为空,那么所创建的Record将会被创建在EGLSource根目录下。
在这个示例中我们使用“Record from JSON”向导。所以选择“Record from JSON” 模板。然后点击“Next”。
3. 填写Records from JSON页面
在这页中,你会看到三个选项啊。他们是“Create from a URL”,“Create from a file” 和“Create from a string”。由于第三方服务是发布在互联网上,所以我们需要通过URL的方式来获取服务。这里我们选择“Create from a URL”作为生成第三方服务Record的方式。
选择“Create record from a URL”。在输入框中填写第三方REST服务的URL。然后点击“Next”,Record将会自动被生成。
4. 检查生成的Record

选择“Create record from a URL”。在输入框中填写第三方REST服务的URL。然后点击“Next”,Record将会自动被生成。
Create Interface for 3rdParty Service
另外,第三方服务调用还有多种调用方式,例如@GetRest和@PostRest等. 这个Annotation决定了服务调用的方法。而responseFormat这个参数决定了返回数据类型的数据格式是XML还是JSON。这个在之前的部分已有介绍。
uriTemplate这个参数是第三方服务发布的RUI。 EGL通过URL中的{} 和接口定义中的输入参数进行连接。在本例中,接口定义中的“query”参数在服务调用时会被嵌入到ruiTemplate的{query}里。
接口方法定义中的Returns定义了返回数据的结构。 示例中的GeoNames数据类型就是本文开始时为第三方服务创建的Record数据类型。
as�[n-8���宋体;mso-font-kerning:1.0pt;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA'>Record。你可以通过双击来打开并编辑。amd�"i8���oman";mso-hansi-font-family:"Times New Roman"'>和“Create from a string”。由于第三方服务是发布在互联网上,所以我们需要通过URL的方式来获取服务。这里我们选择“Create from a URL”作为生成第三方服务Record的方式。选择“Create record from a URL”。在输入框中填写第三方REST服务的URL。然后点击“Next”,Record将会自动被生成。
Bind resource for 3rdParty Service
可以查看Resource Binding相关文章来进行更详细的了解(文章链接:http://blog.youkuaiyun.com/rationalgroup/article/details/7361415)
注意: 如果已经在uriTemplate中定义了服务的RUI,那么Deploymen Descriptor文件中的“BaseURI”一栏就可以为空。EDT会将uriTemplate连接在Base URI之后共同组成最终的RUL。