0

サーバーへのすべての REST API リクエストに対して、XML と JSON の両方のコンテンツ タイプをサポートしたいと考えています。それについて何か考えはありますか?

ミドルウェアを追加してリクエストのContent-Type/をチェックし、Acceptその XML がそれを JSON に変換してルートに渡すかどうかを確認し、それらのレスポンスが送信前に XML に変換されるようにすることを考えています。

だから私の質問は:

  • それを行う最適な方法は何ですか?
  • これを行う既存のライブラリはありますか?

各エンドポイントに追加のロジックを追加したり、新しいエンドポイントを作成したりしたくありません。これを行うためのより良い方法が必要です。

PS:エクスプレスを使用しています。

編集: 要件が変更され、[this] ( http://goessner.net/download/prj/jsonxml/ )を使用して一方向の変換 (json から xm へ) のみを行っていません。

4

1 に答える 1

1

Accept ヘッダーを使用して、クライアントがクエリ パラメーターではなく JSON または XML を好むかどうかを判断します。セマンティクスはAcceptヘッダーであり、「次の MIME タイプを受け取りたい」という意味であり、リクエストでのみ使用されます。ヘッダーは、Content-Type「このメッセージ本文はこの MIME タイプでフォーマットされている」ことを意味し、応答と要求で使用できます (それらがメッセージ本文の場合)。私はこのパターンを使用します:

  • ほとんどのルート ハンドラーで、正規の応答データ表現を として組み立てますres.body。これはプレーンな JavaScript オブジェクト データである必要があります。終わったら電話next()
  • ルーターの後にミドルウェアを追加して、セットで未送信の応答を検索しres.body、ヘッダーに基づいてXML としてAcceptフォーマットするか、クライアントが JSON を必要とする場合にのみ行います。ブール値を使用して、応答が送信されたかどうかをテストしたり、送信時に設定が解除されていることを確認したりできる場合があります。res.bodyres.send(res.body)res.headerSentres.body
于 2013-03-14T21:28:42.210 に答える