5
DBのパフォーマンスを考慮して複雑なREST APIを設計するにはどうすればよいですか?
REST APIの設計方法に関するいくつかのチュートリアルに従ってきましたが、まだいくつかの大きな疑問符があります。これらのチュートリアルはすべて、比較的単純な階層のリソースを示しています。これらのチュートリアルで使用されている原則が、より複雑な階層にどのように適用されるかを知りたいのです。さらに、彼らは非常に高い/建築レベルにとどまります。永続層は言うまでもなく、関連するコードはほとんど表示されません。Gavin Kingが言ったように、私は特にデータベースのロード/パフォーマンスについて心配しています: 開発のすべての段階でデータベースに注意を払えば、労力を節約できます アプリケーションがのトレーニングを提供するとしますCompanies。Companies持っDepartmentsていOfficesます。Departments持っていEmployeesます。Employees持っているSkillsとCoursesし、特定のLevel特定のスキルのは、いくつかのコースのために署名することができるように要求されています。階層は次のとおりですが、 -Companies -Departments -Employees -PersonalInformation -Address -Skills (quasi-static data) -Levels (quasi-static data) -Courses -Address -Offices -Address パスは次のようになります。 companies/1/departments/1/employees/1/courses/1 companies/1/offices/1/employees/1/courses/1 リソースを取得する したがって、会社を返すときに、階層全体を返すことはできませんcompanies/1/departments/1/employees/1/courses/1+ companies/1/offices/../。部門または展開された部門へのリンクのリストを返す可能性があり、このレベルでも同じ決定を行う必要があります。部門の従業員または展開された従業員へのリンクのリストを返しますか?それは部門や従業員などの数に依存します。 質問1:私の考えは正しいですか。「階層をどこで切るか」は、私がしなければならない典型的なエンジニアリング上の決定ですか ここで、尋ねられたときGET companies/idに、部署のコレクションへのリンクのリストと展開されたオフィス情報を返すことにします。私の会社には多くのオフィスがないので、テーブルOfficesと一緒に参加するAddressesことは大したことではありません。応答の例: GET /companies/1 200 OK { "_links":{ "self" : { "href":"http://trainingprovider.com:8080/companies/1" }, "offices": [ { "href": "http://trainingprovider.com:8080/companies/1/offices/1"}, { "href": "http://trainingprovider.com:8080/companies/1/offices/2"}, { "href": …