出自Yahoo_cn_wiki

跳转到: 导航, 搜索

您在这:首页 > NCP文档中心 > NCP接口文档 > 回调地址映射

回调地址映射

目录

本章内容仅适用于代码嵌入方式,如果你采用的是框架嵌入方式,可以忽略本章的内容。

代码嵌入方式下,用户访问NCP页面时,NCP调用对应的回调接口URL获取模块的内容。

完整视图回调接口的URL是根据NCP页面的URL和应用注册的信息计算出来的,这个计算的过程称为回调地址映射

回调地址映射规则

回调地址映射的规则如下:

  • 原始NCP页面URL:http://{site_domain}/apps/{app_path}/{page_uri}?{page_args},其中:
    • {site_domain}:NCP站点域名
    • {app_path}:应用路径
    • {page_uri}:当前页面的相对URL
    • {page_args}:回调参数
  • 产生的回调接口URL:{callback_root}/{callback_uri}?{callback_args},其中:
    • {callback_root}:回调接口URL的路径部分,即最后一个"/"之前的部分
    • {callback_uri}:等于{page_uri}
    • {callback_args}:等于{sys_args}&{page_args},其中{sys_args}NCP系统参数

由于用户直接访问的是NCP页面,开发者通常需要根据回调接口的URL反推出NCP页面的URL,以产生正确的应答。这个过程是上述映射的逆过程,称为回调地址逆映射

在通过逆映射计算NCP页面URL的时候,建议使用相对路径,这样可以省略对站点域名的计算。

一个例子

例如前面的Hello World应用,其注册的信息如下:

则该应用的{callback_root}为:

http://example.com/myapp

如果在ncpdemo这个网站中加入Hello World的一个模块,其完整视图的入口页面将是:

http://ncpdemo.zhan.cn.yahoo.com/apps/helloworld/?module_id=xxx

假设模块的完整视图中有如下HTML片段:

 
<a href="/apps/helloworld/help/index.html">帮助</a>
<form action="/helloworld/change_name.php" method="get">
  <input type="hidden" name="module_id" value="xxx"/>
  更改姓名:<input type="text" name="name"/>
  <input type="submit" value="提交"/>
</form>

注:module_id这个参数是NCP传递给应用,然后由应用将该参数hidden到表单中。

当用户点击“帮助”链接的时候,会产生如下的回调请求:

http://example.com/myapp/help/index.html?{sys_args}

而当用户提交表单时,会产生如下的回调请求:

http://example.com/myapp/change_name.php?{sys_args}&name={name}

其中{name}为用户提交表单时所填写的姓名。

个人工具