本章讨论如何修改 REST
服务的实现类。
实现类最初包含存根方法,如下例所示:
/// 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
服务遇到内部错误,则不会向客户端报告错误的详细信息。要更改这一点,请将以下内容添加到实现类,然后重新编译它:
Parameter ExposeServerExceptions = 1;
请注意,默认的 %ReportRESTError()
方法会检查此参数。如果您覆盖该方法(参见下一个标题),您可以选择方法是否使用此参数。
如果需要以非默认方式格式化错误响应,请覆盖实现类中的 %ReportRESTError()
方法。在方法中,使用 %WriteResponse()
方法返回错误响应。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。