4

サンプル サービスは次のことを意味します: http://services.odata.org/V4/Northwind/Northwind.svc/

私の質問は:

  1. このサービスに「.svc」サフィックスが付いているのはなぜですか? 私が知っているように、.Net プラットフォームで odata v4 サービスを実装できるのは、RESTier と WebAPI の 2 つの方法だけです。 http://odata.github.io/を参照してください。実際、wcf データ サービスには「.svc」がありますが、wcfds は odata v4 をサポートしていません。

  2. このサンプル サービスの応答本文は、次のように高度に最適化されています。

    HTTP/1.1 200 OK
    Cache-Control: private
    Content-Length: 2015
    Content-Type: application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8
    Expires: Sat, 24 Oct 2015 05:10:34 GMT
    Vary: *
    Server: Microsoft-IIS/8.0
    X-Content-Type-Options: nosniff
    OData-Version: 4.0;
    X-AspNet-Version: 4.0.30319
    ...
    
    {"@odata.context":"http://services.odata.org/V4/Northwind/Northwind.svc/$metadata","value":[{"name":"Categories","kind":"EntitySet","url":"......
    

    wcfds のように 1 行だけですが、私のサービスは次のようになります。

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: application/json; odata.metadata=minimal; charset=utf-8
    Expires: -1
    Vary: Accept-Encoding
    Server: Microsoft-IIS/7.5
    OData-Version: 4.0
    X-AspNet-Version: 4.0.30319
    X-Powered-By: ASP.NET
    Date: Sat, 24 Oct 2015 06:56:24 GMT
    Content-Length: 364
    
    {
      "@odata.context":"http://192.168.1.99:908/api/$metadata","value":[
        {
          "name":"Test","kind":"EntitySet","url":"Test"
        },{
          "name":"TDefStoreEmp","kind":"EntitySet","url":"TDefStoreEmp"
        },{
          "name":"TDefEmp","kind":"EntitySet","url":"TDefEmp"
        },{
          "name":"TDefStore","kind":"EntitySet","url":"TDefStore"
        }
      ]
    }
    

    行が多すぎます。1行はどうしましたか?

  3. サンプル サービスは wcfds に基づいていると思われますが、どのように V4 をサポートできるのでしょうか? 実際、私は wcfds が好きです。コントローラーを必要としないためです。データベースを公開したいだけで、インターネットで 1433 ポートを開きたくありません。

私の英語は上手ではありません。理解して助けてください、ありがとう!

4

2 に答える 2

2
  1. そうです、このデモ サービスは WCF Data Service を使用して実装されています。Web API ベースのデモ サービスについては、次を参照してください。

http://services.odata.org/TripPinWebApiService

OData V4 の WCF Data Service は正式にサポートされていないため、代わりに WebAPI を使用することをお勧めします。

  1. これは JSON のインデントと呼ばれ、デフォルトで有効になっています。インデントを無効にするには、webapi 構成コードに次を追加してください。

    var formatters = ODataMediaTypeFormatters.Create();

    foreach (フォーマッタの var フォーマッタ) { formatter.MessageWriterSettings.Indent = false; }

    config.Formatters.InsertRange(0, フォーマッタ);

  2. ソースの WCF データ サービスは、 https ://github.com/OData/odata.net/tree/WCFDSV4 で公開されています。

実際、実装には OData V4 仕様とのギャップがあることに注意してください。しかし、興味があれば、自由に自分でビルドしたり、新しい機能を追加したりできます。

提案されているように、OData V4 サービスのセットアップには WebAPI OData を使用することをお勧めします。また、より wcfds スタイルに似た RESTier を使用することもできます。

于 2015-10-26T04:49:43.430 に答える