第四章 IRIS 修改实现类

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

本章假设您以前已经生成了REST服务类,如“创建和编辑REST服务”中所述。

4.1 初始方法定义

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

/// 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服务规范定义的契约的签名。

4.2 实施方法

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

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

有关这些方法的详细信息,请参阅%REST.Impl类引用。

4.3 公开服务器错误的详细信息

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

Parameter ExposeServerExceptions = 1;

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

4.4 修改错误响应

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

有关这些方法的详细信息,请参阅%REST.Impl的类引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值