创建ABAP REST类以查询多个实体



我的环境中没有可用的网关,我想使用ABAP REST库来公开web服务:SAP库-REST编程教程

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

http://mydomain/domainvalues/XFELD

GET实现在我的类ZCL_REST_DOMAIN_VALUES中,从实现IF_REST_RESOURCE~GET方法的CL_REST_REOURCE扩展而来。

现在我想让它可以读取或查询多个域。我不是REST方面的专家,但我看到了两个搜索选项,一个使用与单个实体相同的URI,另一个使用用于查询的特殊URI。

  • http://mydomain/domainvalues?Id=XFELD,WERKS_D
  • http://mydomain/query/domainvalues?Id=XFELD,WERKS_D

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

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

SAP自己的内部指导方针建议对OData和普通REST服务进行类似的塑造,以避免混淆并促进两者之间的切换:

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

两者都将由相同的REST端点处理程序类提供服务,当然您可以为这些情况创建单独的方法或委托。

正如@SandraRossi在下面正确指出的那样,在将查询参数移交给较低级别之前,请记住对其进行消毒(=白名单/黑名单/转义),以防止SQL注入攻击。

相关内容

  • 没有找到相关文章

最新更新