XPages扩展库和REST控件

时间:2015-12-01 00:39:58

标签: rest xpages

我最近才开始在最新的Xpages扩展库中尝试使用REST控件。

我已经能够创建一个REST控件来返回视图的内容: https://www.example.com/RESTApp.nsf/data.xsp/companies

和传入UNID的文档中的字段: https://www.example.com/RESTApp.nsf/data.xsp/company/unid/8C4DA14484C699B488257F0800691B2C

更进一步,我想创建一个REST API,可供我公司内的另一个IT小组用来访问客户数据(比如根据客户ID)。如果我有一个Domino视图,客户数据按客户ID排序,那么如果外部组想要通过传递客户ID而不是UNID来使用REST服务,我的REST控件会是什么样子?

我是否需要创建自定义REST服务?任何让我入门的例子都会非常感激。

谢谢,

2 个答案:

答案 0 :(得分:1)

我认为您需要创建自定义REST服务。

如果您要查找要传递的网址,则可能是这样的:http://localhost/jobs10.nsf/TriggerNav.xsp?/hotSheets?rName=Alex

我们这样的事情:

var uriString = facesContext.getExternalContext()。getRequest()。getRequestURI(); var unidString = @RightBack(uriString,“rNamee /”);

获取您传递的参数。将它传递给你的GET,它应该可以工作。

我做了一个关于这个的Notesin9,以及这里的链接作为完整的应用程序。它写入nsf,但您可以将其用于

http://stentorian.us/stentorian/DominoHerald.nsf/%24%24OpenDominoDocument.xsp?documentId=28500727329491B687257E5900744A14&action=editDocument

干杯, 布赖恩

答案 1 :(得分:0)

这在很大程度上取决于您的API应该如何与外界相似。您有两个注意事项:

  • 调用参数如何显示
  • 数据应如何显示

?ReadViewEntries&OutputFormat=JSON&RestrictToCategory=customerID对视图进行分类时,最简单的方法就是拥有一些(只读)休息API。

然而,我会从与另一组协商的Swagger API definition定义开始。这种方法被称为"合同首次开发"。然后构建一个基于bean的自定义REST服务。由于您可以访问该URL,因此您可以在其余名称后获取该部分(例如data.xsp / company / companyID)。

使用我的blog article作为起点。

简而言之:你的bean需要扩展CustomServiceBean。很简单。

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ibm.domino.services.ServiceException;
import com.ibm.domino.services.rest.RestServiceEngine;
import com.ibm.xsp.extlib.component.rest.CustomService;
import com.ibm.xsp.extlib.component.rest.CustomServiceBean;

public class CustomSearchHelper extends CustomServiceBean {

@Override
public void renderService(CustomService service, RestServiceEngine engine) throws ServiceException {

    HttpServletRequest request = engine.getHttpRequest();
    HttpServletResponse response = engine.getHttpResponse();

    response.setHeader("Content-Type", "application/json; charset=UTF-8");

    // Your code goes here!

    }
}

让我们知道它是怎么回事