1

私は WCF の安らかな Web サービスを持っています。一般に、各エンドポイントは /service/help で完全に記述できます。これは、入力パラメーターとしてクエリ文字列のみを使用するためです。たとえば、次の単純な関数があります。

[WebInvoke(UriTemplate = "customer?name={name}", Method = "POST")]
public void customer(string name)

これは /service/help に次のように表示されます。

Service at http://localhost:7000/service/customer?name={NAME}

残念ながら、次の 2 つのケースではこれを行うことができません。

  1. 非常に長い値を持つエンドポイント (クエリ文字列が切り捨てられる)
  2. 機密データを含むエンドポイント (IIS によってログに記録されるパスワード パラメーター)

これら 2 つのケースでは、リクエスト本文を渡す必要があることがわかっています。関数を次のように変更します。

[WebInvoke(UriTemplate = "customer", Method = "POST")]
public void customer(Stream requestBody)

/service/help のみが返されるようになりました

Service at http://localhost:7000/service/customer

リンクをクリックして /service/help/operations/customer に移動しても、有用な情報が得られません。

The Request body is a byte stream

リクエストボディのXML/jSON構造をAPIのコンシューマにどのように記述すればよいですか? /service/help を利用できますか、それとも API ドキュメントを使用する必要がありますか?

4

1 に答える 1

0

私の最初の考え: すべての API エンドポイントを URL 内の引数で装飾することは、ある場合にのみ有用であり、期待される情報を提供した API の完全な API ドキュメントを作成する必要があると思います。 /service/customer などのリクエストの入出力。

また、名前が長すぎて URL が切り捨てられるのはなぜでしょうか? 私があなただったら、1000 文字の長い名前は無効な入力であると考えます。すぐに400: bad request対応する必要があります。

于 2013-09-27T17:12:57.047 に答える