【问题标题】:XPages Extension Library and REST controlXPages 扩展库和 REST 控件
【发布时间】:2015-12-01 00:39:58
【问题描述】:

我最近才开始在最新的 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)。如果我有一个包含按客户 ID 排序的客户数据的 Domino 视图,如果外部组想要通过传递客户 ID 而不是 UNID 来使用 REST 服务,我的 REST 控件会是什么样子?

我需要创建自定义 REST 服务吗?任何让我入门的例子都将不胜感激。

谢谢,

【问题讨论】:

    标签: rest xpages


    【解决方案1】:

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

    如果您正在寻找要传递的 URL,它将是这样的: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

    干杯, 布赖恩

    【讨论】:

    • 谢谢布赖恩。这非常适合我现在所需要的。
    【解决方案2】:

    这在很大程度上取决于您的 API 在外部看起来应该是什么样子。您有 2 个注意事项:

    • 调用参数应该是什么样子的
    • 数据应该是什么样子的

    ?ReadViewEntries&OutputFormat=JSON&RestrictToCategory=customerID 当您对视图进行分类时,将是拥有一些(只读)rest 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!
    
        }
    }
    

    告诉我们进展如何

    【讨论】:

    • 谢谢斯蒂芬。 Brian 的解决方案满足了我的迫切需要。对于更长期的解决方案,我一定会研究您的建议。欣赏输入。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多