创建 ABAP REST Class 查询多个实体

Create ABAP REST Class to query multiple entities

我的环境中没有可用的网关,我想使用 ABAP REST 库来公开 Web 服务:SAP Library - REST Programming Tutorial

用一个非常简单的例子,我成功创建了一个class来读取单个域的值列表,GET调用非常简单:

http://mydomain/domainvalues/XFELD

GET 实现在我的 class ZCL_REST_DOMAIN_VALUES 中扩展自 CL_REST_RESOURCE 实现 IF_REST_RESOURCE~GET 方法。

现在我想让读取或查询多个域成为可能。我不是 REST 方面的专家,但我看到了两种搜索方式,一种使用与单个实体相同的 URI,另一种使用特殊 URI 进行查询。

在后端,我是否应该使用第二种方法并仅为此调用创建一个 class 实例 ZCL_REST_DOMAIN_VALUES_QUERY 再次实现 GET 方法?

或者也许我应该使用 POST 方法来发送要在正文中获取的 ID 列表?

SAP 自己的内部指南建议将 OData 和普通 REST 服务塑造成相似的,以避免混淆并促进两者之间的切换:

http://mydomain/domainvalues?$filter=Id in ('XFELD', 'WERKS_D')

两者都将由同一个 REST 端点处理程序提供服务 class,当然您可以自由地为这些案例创建单独的方法或委托。

记得在将查询参数移交给某个较低级别之前清理 (= whitelist/blacklist/escape) 以防止 SQL 注入攻击,正如@SandraRossi 在下面正确指出的那样。