問題タブ [restful-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - RESTful GET応答はリソースのIDを返す必要がありますか?
ここにいる多くの開発者は、 RESTful APIからのGETリクエストがリクエストされたリソースのIDを返す必要があるかどうかについて、友好的な(宗教的と言う人もいます)議論をしています。次のGETリクエストを想定します。
http://my.api.com/rest/users/23
これは現在次を返します:
結果セットに「id」がないことに注意してください。
この問題と戦っているキャンプは基本的に4つあります。
キャンプ#1:発信者がGETリクエストを行うとき、彼らはすでにIDを知っています。したがって、結果セットにはIDを含めないでください。呼び出し元がUI編集を有効にするためにこのデータを必要とする場合、呼び出し元はID 23をパススルーする必要があります。おそらく、メンバー{"id":23}をJSONに手動で追加します。
キャンプ#1の人々はまた、結果セットにIDが存在することは、この値が変更可能であることを示していると主張していますが、もちろん変更できません。
キャンプ#2: IDがないと、JSON結果セットをUIフォームの編集/更新操作にネイティブに使用できません。代わりに、AJAXコールバックメカニズムがIDフィールドを渡し、手動で結果セットに追加する必要があります。これは扱いにくく、エラーが発生しやすいようです。UI担当者は、結果セットが存在するはずのデータ、つまりIDが欠落しているように「感じる」と主張しています。
キャンプ#3:これらの人々は一貫性を心配しています。APIによって返されるユーザーオブジェクトのコレクションがある場合、これらのオブジェクトにはIDが含まれている必要があります。したがって、一貫性を保つために、シングルトンバージョンのGETにはIDも含める必要があります。
キャンプ#4:これらの人々は、ユーザーのGETリクエストが、IDを含むハイパーメディアまたはSelfLinksの形式でメタデータを返す可能性があることを示唆しています。
これは難解な「Who'sRight?」ではありません。どちらか。私たちが採用するアプローチは、APIの形状を決定し、新しい数週間にわたる複数の開発者の作業負荷に影響を与えます。
java - HTTP getを介してオーディオファイルを取得する方法は?
安全なRESTfulサービスからhttpgetを介してオーディオファイルを取得しようとしています。テキストXMLサービスの受信と解析に成功しましたが、オーディオファイルの操作方法が少し混乱しています。
XML応答で安全なRESTfulサービスを呼び出すコード
ruby-on-rails - RESTful サービスでの複数のリソース リクエストの処理
複数のリソースを渡すリクエストを処理する方法について混乱しています。
次の階層があります。プロジェクトには成果物があり、成果物にはドキュメントがあります。プロジェクト -> 成果物 -> ドキュメント。
ドキュメントに固有のカスタム アクション、たとえば change_status については、/projects/1/deliverables/1/documents/1/change_status などのルートがあります。この時点まではすべて良好です。
しかし、複数のドキュメントで change_status を変更したい場合のベスト プラクティスは何でしょうか? /projects/1/deliverables/1/documents/change_status (ドキュメント ID の配列を渡す) は、「ドキュメント」の後に特定の ID が存在する必要があることを理解しているため、RESTFul のようには見えません。
/projects/1/deliverables/1/change_status (ドキュメント ID の配列を渡す) は、2 つの理由で納得できません。まず、成果物コントローラーが呼び出されます (レールの慣例により)。また、ドキュメントではなく成果物のステータスを変更しているようです。ドキュメントでステータスを変更できることを考えると、結果の URL は紛らわしいと思います。特に、ステータスを成果物にも変更できる場合(ステータスを成果物またはドキュメントに変更することとどのように区別しますか。この場合、URL は同じになります) .
SO基本的に、RESTFulで複数のリソースを処理するリクエストを処理する方法について混乱しています。任意のヘルプ/説明をいただければ幸いです。ありがとう!
session - JAX-RS/Restfull-APIとセッションの管理
jax rs Restサービスは、リクエストごとに新しいリソースインスタンスの作成を強制しますが、残りのWebサービスのセッション情報を限られた時間保持することは悪い考え/悪い習慣ですか?
rest - RESTful - GET または POST - どうすればよいですか?
RESTful にしたい Web サービスに取り組んでいます。CRUD のやり方については知っていますが、完全に理解できないことがいくつかあります。したがって、これは事実です:
ブラウザー (クライアント) でデータを収集し、追跡サーバーに送信する追跡サービスがあります。プロファイルが存在する場合と存在しない場合の 2 つのケースがあります。最後に、サービスは DOM に挿入する必要があるいくつかの要素を返します。
したがって、基本的には2つのWebサービスが必要です:
質問 1: 現在、GET のみを使用していますが、CRUD をサポートするようにサーバーを書き直しています。その場合、プロファイルが存在しない場合は POST を使用する必要があります。http://mydomain.tld/profiles/のようなものと POST ペイロードには、保存する情報があります。プロファイルが存在する場合は、PUT とhttp://mydomain.tld/profiles/を使用します。PUTのペイロードには保存するデータがあります。すべて問題ありませんが、問題は、私が理解している限り、xmlhttp が PUT をサポートしていないことです。更新ですが、POST を使用しても問題ありませんか?
質問 2: 前述のように、トラックが作成されると、私のサービスは DOM に挿入されるいくつかの要素を返します。論理的には、RESTful に保つには、POST/PUT を使用してプロファイルを更新し、次に GET を使用して挿入する要素を取得する必要があると思います。ただし、サーバー側の帯域幅とリソースを節約するには、別のリソースであっても、POST/PUT を使用して要素をプロファイルに返す方が理にかなっています。これについてどう思いますか?
BR/スネ
編集:
質問 3: 場合によっては、プロファイルを更新するだけで要素を受け取りたくない場合があります。同じリソースを引き続き使用し、ペイロード パラメータを使用して要素が必要かどうかを指定できますか。たとえば、「dont_receive_elements:true」
rest - サーバー側データベース ハンドラ スクリプト
Linux デバイスから Python 経由で cosm.com の RESTful API にデータをプッシュしています。これで、データの処理と保存を独自のサーバーに実装したいと考えています。具体的には、HTTP PUT メソッドを使用して、サイトの API にプッシュします。
私は 1 の R&D であり、銃の下にいます。
お時間をいただきありがとうございます。
spring - 安らかなサービスのエラー
安らかなウェブサービスに取り組んでいます。Rest ful サービスの呼び出し中に次のエラーが発生しますが、統合テストは同じ要求に対して機能しています。
エラー: 重大: 2012 年 7 月 15 日 8:59:10 AM org.apache.cxf.jaxrs.utils.JAXRSUtils readFromMessageBody 重大: 入力ストリームをターゲット クラス UserActivity、コンテンツ タイプに逆シリアル化するエラー: / 2012 年 7 月 15 日 8:59:10 AM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse 警告: WebApplicationException がキャッチされました: 入力の終わりのため、オブジェクトにマップするコンテンツがありません
JsonInput は {"pageURL":"https://google.com,"activityType":"LOGIN","userGUID":"105"} です。
そして、テストクライアントで同じ入力を試みると、それは機能しています...ここで何が起こっているのか、何かライブラリがありませんか?
どんな提案でも大歓迎です。
http - この状況に最も適したHTTP応答コードはどれですか?
私はユーザーが物事を購読できるようにするためのAPIを書いています。ユーザーは、次のPOST
ようなものを送信することで、何でもサブスクライブできます。
ここにsure
パラメータが表示されます。誤ってサブスクリプションを作成しないようにするために、これを使用しています。クライアントがパラメータなしでその情報を送信した場合、sure
APIは、GUIに「これをサブスクライブしてください」と尋ねさせる要求を拒否します。ユーザーが確認すると、同じ投稿がsure
パラメーターを使用して再度発生します。そして、サブスクリプション(またはサブスクリプション解除)が発生します。
sure
したがって、パラメータがないためにそのリクエストを拒否する場合。どの応答コードを使用する必要がありますか?400(悪いリクエスト)が使えると思いましたが、よくわかりません。
ご返信ありがとうございます。
api - 複数の RESTful API を使用する 1 つの Web アプリケーション?
複数 (2 つまたは 3 つ) の既存の RESTful API と通信する必要がある Web アプリケーションを設計しています。各 API は、異なるデータと機能を提供します。Web アプリケーションは基本的に API を 1 つのユーザー インターフェイスにまとめます。
このシナリオに基づいて、いくつか質問があります。
- これは一般的ですか?
- これは悪い習慣ですか、それとも悪いアーキテクチャですか? もしそうなら、いくつかの代替手段は何ですか?
- (下の図 #1) JavaScript + AJAX を使用して、これらの API を操作したいと考えています。別の絶対 URL でアドレス指定して、別のドメインに AJAX リクエストを送信しますか? 例: http://api1.domain.com/something、http://api.domain.com/something_else
- (下の図 2) (3) の代わりに、単にバックエンド コントローラーをこれらの API とやり取りさせてから、フロントエンド (JavaScript) をアプリケーションのコントローラーとやり取りさせるべきですか? 基本的にこれはファサードになります。
私は SOA について深く掘り下げているので、無知に聞こえる場合はご容赦ください。そして、FWIW、Ruby on Rails を使用する予定です。
図 1:
図 2:
http - ユーザーが他のエンティティとやり取りするための URL を構造化する RESTful な方法は何ですか?
ユーザーが他のエンティティとやり取りするための URL を構造化するための正しい RESTful な方法を見つけようとしています。
たとえば、 と の 3 つのエンティティusers
がposts
ありtags
ます。
「ユーザーが投稿にいいね」、「ユーザーがタグをフォロー」、または「ユーザーがユーザーをフォロー」をどのように表現しますか。
これは私が念頭に置いていたことですが、それが正しい方法であるかどうかはわかりません:
POST /user/:id/like/post/:id
(ユーザーが投稿を気に入った)
POST /user/:id/follow/user/:id
(ユーザーは別のユーザーをフォローしています)
非常にセマンティックに見えますが、POST メソッドについてはよくわかりません