前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >修改实现(IMPL)类

修改实现(IMPL)类

作者头像
用户7741497
发布2022-08-05 09:24:41
3580
发布2022-08-05 09:24:41
举报
文章被收录于专栏:hml_知识记录

本章讨论如何修改 REST 服务的实现类。

初始方法定义

实现类最初包含存根方法,如下例所示:

代码语言:javascript
复制
/// Returns all pets from the system that the user has access to<br/>
/// The method arguments hold values for:<br/>
///     tags, tags to filter by<br/>
///     limit, maximum number of results to return<br/>
ClassMethod findPets(tags As %ListOfDataTypes(ELEMENTTYPE="%String"), limit As %Integer) As %Stream.Object
{
    //(Place business logic here)
    //Do ..%SetStatusCode(<HTTP_status_code>)
    //Do ..%SetHeader(<name>,<value>)
    //Quit (Place response here) ; response may be a string, stream or dynamic object
}

在每种情况下,这些存根方法都具有遵循 REST 服务规范定义的契约的签名。

实现方法

对于实现类中的每个方法,根据使用它的 REST 调用编辑方法定义(特别是实现)。请注意,该方法前面有一个注释,该注释是相应 REST 调用描述的副本。在实施中:

  • 返回适当的值。
  • 检查请求消息。为此,请使用实现类的 %CheckAccepts()%GetContentType()%GetHeader() 方法。这里提到的所有方法都是从 %REST.Impl 继承的,它是你的实现类的超类。
  • 根据需要设置 HTTP 状态代码以指示,例如,资源是否可用。为此,请使用 %SetStatusCode() 方法。有关 HTTP 状态代码的信息,请参阅 http://www.faqs.org/rfcs/rfc2068.html
  • 设置 HTTP 响应标头。为此,请使用 %SetHeader()%SetHeaderIfEmpty()%DeleteHeader() 方法。
  • 如果需要,报告错误。为此,请使用 %LogError() 方法。

暴露服务器错误的详细信息

默认情况下,如果 REST 服务遇到内部错误,则不会向客户端报告错误的详细信息。要更改这一点,请将以下内容添加到实现类,然后重新编译它:

代码语言:javascript
复制
Parameter ExposeServerExceptions = 1;

请注意,默认的 %ReportRESTError() 方法会检查此参数。如果您覆盖该方法(参见下一个标题),您可以选择方法是否使用此参数。

修改错误响应

如果需要以非默认方式格式化错误响应,请覆盖实现类中的 %ReportRESTError() 方法。在方法中,使用 %WriteResponse() 方法返回错误响应。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 初始方法定义
  • 实现方法
  • 暴露服务器错误的详细信息
  • 修改错误响应
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档