最佳的外部REST API访问模式是什么?

3

我正在处理一些与Facebook和Netflix等外部服务相关的项目。目前,我使用的大多数库都只有单个方法来调用特定的API函数,但似乎总是会调用某种基本方法来发起请求。类似这样:

public class ExternalApi
{
    public string SendMessage( criteria )
    {
         //do something unique to this method with criteria like
         //like generating an xml statement or fql query

         return SendRestRequest( modifiedCriteria );
    }

    public string GetData( criteria )
    {
         //do something unique to this method with criteria like
         //like generating an xml statement or fql query

         return SendRestRequest( modifiedCriteria );
    }

    public string SendRestRequest( modifiedCriteria )
    {
         //add global things to modifiedCriteria like authentication bits
         //or wrapping the criteria in some xml or json shell

        var request = new HttpRequest();
        //make the request, return data
    }
}

我的问题是,在每个单独的API调用方法中,是否有更好的模式或OO原则可供使用,以便我不必每次都明确调用基本方法?
我正在寻找一种类似于ASP.NET MVC框架和ActionResults的调用拦截模式吗?
编辑1:我不打算使用任何其他服务或库的功能,例如Wcf。对于这些项目,我只使用1-5%的这些API的能力,并且更喜欢自己编写代码来实现这些功能。
2个回答

4

0
我不得不为我的学位作业之一编写一个REST客户端。我采用了分层方法,并尝试应用外观模式来抽象化细节。
interface HTTPRequest{
  public void get();
  public void post();
  public void put();
  public void delete();
}

HTTPRequest提供了基本的HTTP功能,然后我创建了RestClient。

interface RestClient{
  public void create();
  public void read();
  public void update();
  public void delete();
}

这给了我一个更像CRUD的界面。然后我构建了一个基本的RestClient类,可以被子类化以添加自定义功能。每个函数都有一个相应的回调函数,在它将数据返回给调用者之前调用它。它被命名为"createResultProcessor",在RestClient的子类中可以重写它,提供自定义结果解析等功能。
从未想过我会说这样的话,因为我已经为一生创造了足够的UML图表,但SO确实需要一些UML图表工具!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接