0

私はREST APIを設計しています。私のリソースの1つは、ユーザー側からいくつかの基本的なデータを取得しようとしています。

ここで私が言及する必要がある2つのポイントがあります:

  1. すべてのユーザー情報は、たった 1 つの http リクエストでサーバー側に送信する必要があります。
  2. ユーザーの情報は、約 30 の異なるフィールドです。

したがって、サーバー側で引数の長いリストを持つことはあまり良いことではないと思います。この部分を、JSON を受け入れる単一の引数に置き換えたいと考えています。

そうすることが正しいと思いますか。

4

1 に答える 1

1

はい。メソッドを GET ではなく POST に変更し、リクエスト本文で JSON 形式のデータを送信します。

C# 構文を使用した例:

ObjectList というオブジェクトを返すメソッドがあり、リストを生成するために、コンストラクターが ObjectListRequest オブジェクトを必要とするとします。

public ObjectList GetObjectList(ObjectListRequest request)
{
    return new ObjectList(request)
}

ObjectListRequest クラスには、リクエストが使用するさまざまなパラメーターを含めることができます-

public class ObjectListRequest
{
    public string SearchText { get; set; }
    public string CreatedBy { get; set; }
    public int SequenceStartRange { get; set; }
    public int SequenceEndRange { get; set; }
    public bool HasMetaData { get; set; }
}

本文に JSON を含む POST を使用してこのメ​​ソッドを呼び出すには、次のように送信します。

Method:   POST
Url:      http://your.service.com/GetObjectList
Headers:  
   Content-Type: application/json

Body:
   {
      "request":{
          "SearchText":"test text",
          "CreatedBy":"myusername",
          "SequenceStartRange":0,
          "SequenceEndRange":15,
          "HasMetaData":"true"
      }
   }

これは、C# を使用し、Microsoft の組み込みのシリアライゼーション ライブラリを使用していることを前提とした特定の例ですが、そうでない場合でも、同じ基本的な考え方を使用して、やろうとしていることを実行できます。

于 2012-08-16T21:13:58.957 に答える