6

RESTに続いて、APIが検出可能であり、相互にリンクする必要があることをお勧めします。

ServiceStackはあらゆる種類の逆ルーティングをサポートしていますか?ASPMVCのようなものを探していUrl.RouteLinkます。

4

1 に答える 1

8

ここで述べられているいくつかの混合概念があります。

  1. RESTに準拠しようとする努力の中で、応答にURIを埋め込みたいと考えています。
  2. 応答にURIを埋め込むのに最適な方法。「逆ルーティング」メカニズムがこれを行う方法であると想定しました。

RESTスタイルと強いタイピング

ここで、一方が他方を意味するものではないことを明示的に述べたいと思います。一方では、RESTアーキテクチャ(構築しているシステムを問わず)に従うことを検討しており、他方では、型付きAPIを使用する強い型付けの慣行に従いたいと考えています。この場合、外部URIを生成します。 API。RESTは型付きAPIを促進せず、代わりにAPIの外部URIサーフェスと緩く型付けされたContent-Typeにバインドすることを好むため、これらはやや対照的なスタイルです。強い型付きの言語では型付きAPIにバインドすることをお勧めしますが、たとえば、エンドツーエンドの型付きAPI ServiceStackは、すぐに使用できるようにサポートしています。

ServiceStackで強い型のURIを生成する

ServiceStackにはASP.NETMVCの「逆ルーティング」の概念/機能は明示的にありませんが、.NETServiceクライアントがユーザー定義のカスタムルートを生成および使用するために使用するのと同じ機能を再利用できます。これを使用するには、DTOでカスタムルートを指定する必要があります(つまり[Route]、AppHostの流暢なAPIではなく属性を使用します)。例:

[Route("/reqstars/search", "GET")]
[Route("/reqstars/aged/{Age}")]
public class SearchReqstars : IReturn<ReqstarsResponse>
{
    public int? Age { get; set; }
}

var relativeUrl = new SearchReqstars { Age = 20 }.ToUrl("GET");
var absoluteUrl = EndpointHost.Config.WebHostUrl.CombineWith(relativeUrl);

relativeUrl.Print(); //=  /reqstars/aged/20
absoluteUrl.Print(); //=  http://www.myhost.com/reqstars/aged/20

ToAbsoluteUriまたは、Absolute Urlが必要な場合は、 Extensionメソッドを使用できます。

var absoluteUrl = new SearchReqstars { Age = 20 }.ToAbsoluteUri();
于 2012-12-29T08:38:52.913 に答える