nabecamel / ec_demo

0 stars 0 forks source link

商品一覧取得APIを作る #9

Closed campbel2525 closed 1 week ago

campbel2525 commented 3 months ago

タスクのゴール

商品一覧取得APIを作る エンドポイントはget /api/products

一旦検索機能はなしでOK

レスポンスのイメージは下記

[
  {
    "id": 1,
    "code": "asdfg-asdfgbh-sdfgbhn-asdfgb",
    "name": "商品名1",
    "unit_price": 1000,
    "percent_tax": 10,
    "created_at": "2021-01-01 00:00:00",
    "updated_at": "2021-01-01 00:00:00"
  },
  {
    "id": 2,
    "code": "RTYUI-hjkl-bnm,-rtyuiedf",
    "name": "商品名2",
    "unit_price": 2000,
    "percent_tax": 10,
    "created_at": "2021-01-02 00:00:00",
    "updated_at": "2021-01-02 00:00:00"
  }
]

restapiの概要

こちらに記載してあります https://github.com/nabecamel/ec_demo/issues/10

nabecamel commented 3 months ago

@campbel2525 お疲れ様です。 今この開発に取り組んでいるのですが、手こずっております。 今回作るものは、app/crudsのようなディレクトリの中に記述し、 それを、app/routers/ のなかのファイルで実行する感じの認識であってますでしょうか?

campbel2525 commented 3 months ago

@nabecamel

今この開発に取り組んでいるのですが、手こずっております。

いきなりapi作るのは難しいですよね もしよければもっと簡単なタスク用意しましょうか?

ユーザー関連のapiに電話番号を付け足すなどはどうですか?

今回作るものは、app/crudsのようなディレクトリの中に記述し、 それを、app/routers/ のなかのファイルで実行する感じの認識であってますでしょうか?

これは人それぞれの好みになりますね。 僕の場合は、「routerに直接書く」か「共通化したいならモデルに書く」がいいと思っています それぞれの理由は下記です。

[routerに直接書く理由] restapiを意識しているため、apiでやることは結局

とはいえ複雑になることあります。 例えば、決済機能の実装とか、一回のapiで複数のテーブルを条件によって更新など このような場合は、apps/usecasesにまとめるのがいいと考えています

[モデルに書く理由] 共通なものはどっかにまとめる必要はあります。 それがapp/crudsなのかapp/modelsという異話だと思うのですが、app/modelsが用意されているのだからapp/modelsに書けばいいんじゃないかといった単純な理由です

この辺は人の好みによるし明確な答えはないように思いますのでお任せします。フォルダ構成を色々考えてみるのも勉強になりそうですね。 この辺は「GoFのデザインパターン」とかが参考になると思います。(ただあまりのめり込むのは時間の無駄になりそうなので注意です。まずはプログラムを書けるようになった方がいいとは思います)

[参考] ちなみに僕が前いたfastapiのプロジェクトではapp/crudsフォルダでまとめていましたよ phpのlaravelでは、モデルに書いている案件もあったし、コントローラーに書いていた案件もあったし、リポジトリパターンを使用していた案件もありました!

nabecamel commented 2 months ago

@campbel2525 返信ありがとうございます! 丁寧に説明いただき解像度が上がりました! なるほど、、、色々書き方があるのですね・・・! 少し難しいですが、どこにどんなファイルを作るかが分かればある程度作れる気がしてます、、!

campbel2525 commented 2 months ago

@nabecamel

こんな感じです!

作成するファイル

修正するファイル

nabecamel commented 2 months ago

@campbel2525 夜分遅くに失礼します! ありがとうございます! 取り組んでみます!