2017-07-04 11 views
2

私はNodeJsとExpressミドルウェアを使用して休憩サービスを作成しています。Rest Apiベストプラクティス - クエリパラメタとして日付を渡す

  1. 私はすなわちGETPOSTPUTDELETE方法の種類に関係なく、すべてのサービスでユーザーIDを取得し、認証用トークンする必要があります - 私が質問の下に持っています。これらの2つのパラメータ、つまりリクエストヘッダーまたはクエリパラメータを取る最良の方法は何ですか?私は身体のパラメータとして取得することを望んでいないので、取得要求は体を持っていないでしょう。

  2. データ取得のためにメソッドタイプGETを使用してサービスを書きたいとします。この呼び出しのパラメータは文字列と日付です。どのようにshoule私はこれのためのクエリパラメータとして、具体的に日付のparam私はjsの日付または他の任意の形式としてそれを渡す必要がパラメータを渡す?

    GET - https://localhost:someport/<objectid>/<createddate> 
    headers - x-user-id:someid 
          x-access-token:sometoken 
    

    この場合、作成された日付を渡す必要があります。

    または以下のものを使用する必要がありますか?

    GET - https://localhost:someport/ 
    headers - x-user-id:someid 
          x-access-token:sometoken 
          x-object-id:someid 
          x-created-date:somedate 
    
+0

ヘッダーとユーザーIDにgetまたはpostパラメーターとしてトークンを入れます。 –

+0

ヘッダーのトークンは意味がありますが、取得またはポストするパラメータとしてユーザーIDが何を意味していますか?サービスは、投稿が問題にならないように取得する必要があります。今はgetヘッダーとクエリのparamが1つだけ提案していますか? – Jeet

+0

ユーザーIDをクエリのparamとして保持することをお勧めします。また、あなたが投稿をサポートしたい場合は全く関係のない話題があり、質問パラムと同じ要請で同じ要請が働くことはありません –

答えて

1

リクエストヘッダーは、そのような機密情報を送信するのに最適な場所です。ヘッダーは、http要求のすべてのメソッドで共通です。そのため、あなたはGETPOSTPUTのような方法について心配したくありません。クエリパラメータを使用すると、URLでより醜いものになります。
さらに、私はUserIDtokenの使用法については知らない。安らかなサーバーでは、ユーザーを識別するためにトークンを使用するためです。そのため一般的にユーザーIDは送信しません。

+0

あなたの答えに感謝します。あなたの情報にjwtを使用していて、既にトークンにユーザーIDを渡しています。私はユーザーIDを取り除くことができます。だから、1つのparam less、ありがとう:) – Jeet

1

残りのAPI設計のベストプラクティスは、そのクエリのparamsとして要求を取得するためにユーザーの機密情報ではないパラメータを公開言います。だから、ユーザーIDと物事のようなものはヘッダーに入れなければならず、他のものは要求パラメーターを取得することができます。

ヘッダーにユーザーIDとトークンのみを持つ最初のものを選択します。

+0

私はそれに同意します。しかし、質問は、日付のような複雑なデータ型はクエリのパラメータとして渡されるべきですか? – Jeet

+0

クエリのパラメータで納得できる日付を渡すことができます。あなたの日付フォーマットに予約されたURL文字と矛盾する文字がないことを確かめてください。 –

関連する問題