クライアント画面では サーバからデータを受け取ればそれを初期値として 受け取らないなら新規作成として画面を作る
保存ボタン押したときは メソッドやパスは同じところに POST する
サーバ側では SQL の insert を使って on conflict do update にすることですでにある ID なら更新にする

Node.js の knex だとこういう感じで書くだけだからかんたん

knex("table1").insert(user_data).onConflict("id").merge()

ID を自動で連番にしたいなら 列定義で連番にするようにしておいて 新規作成の場合には 「id: undefined」 となるようにすれば DEFAULT 扱いになって連番で insert できる
これで新規作成と更新で処理を分ける必要がなくなってけっこう楽

on conflict do update はレコードがあるのはわかっていて 複数のレコードをまとめて更新したいというときにも使えてかなり便利