我最近才开始在最新的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服务?任何让我入门的例子都会非常感激。
谢谢,
丹
答案 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,但您可以将其用于
干杯, 布赖恩
答案 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!
}
}
让我们知道它是怎么回事