0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

REST APIと午後の曖昧な喪失#2

Last updated at Posted at 2025-04-08

第二夜:君に伝えたいことが、四つあった。

翌日も同じバーで僕たちは会った。雨が降っていた。都会のアスファルトを濡らす音が、どこか昔の恋を思い出させる。僕は少し早く来て、ジントニックを頼んでいた。美咲は黒いコートを脱いで、静かに隣の席に座った。

「昨日のRESTの話、なんだか夢に出てきたわ」
彼女はグラスを持たずにそう言った。「URIがどこまでも続いてて、その途中で何度も404が返ってきたの。」

「その夢は悪くないかもしれない」僕は言った。「少なくとも、エラーハンドリングがちゃんとされてる。」

美咲がくすっと笑う。

「今日は、HTTPメソッドの話をもう少しちゃんとしようか」

「うん、聞かせて。昨日の“手紙”の例え、結構気に入ってるの。」

「じゃあ続きを話すよ。たとえば——君が昔の恋人に何かを伝えたいとき、どんな内容の手紙を送る?」

「そうね……“元気にしてる?”って聞くか、“今でもあなたのことを思ってる”って伝えるか、かな。」

「それ、まさにHTTPメソッドの世界だよ」

僕はナプキンにペンで、四つの単語を書いた。

GET  
POST  
PUT  
DELETE

「これが基本の四天王。恋文界のプロトコルだ。」

「プロトコル、ね。」

「GETは、“情報がほしい”という意思表示。たとえば、昔の恋人の近況が知りたい。“今、どこにいる?”とか、“まだ犬を飼ってる?”みたいな。」

「その情報を返してくれるの?」

「もし彼女がまだURI上に存在していれば、200 OKが返ってくる。『飼ってるわ。今でも同じ名前の犬よ』みたいにね。もしもういなければ……そう、404 Not Foundだ。」

「悲しいけど、わかる気がする。」

「POSTは、“新しい思い出を追加したい”という気持ちだ。つまり、『久しぶりに会えない?』とか、『また一緒にレコードを聴きたい』とか。」

「それって、ちょっと勇気いるわね。」

「そう。でも、うまくいけば201 Createdが返ってくる。」

「わあ、それはうれしい返事ね」

「PUTは、“既存の内容をまるごと書き換えたい”というもの。たとえば『前に言ったこと、全部忘れて。僕は君をずっと誤解してた』みたいな。」

「それは……難しいわね。全部塗り替えるなんて。」

「そうなんだ。だから本当はあまり使わない方がいい。人間関係においてはね。でもAPIの世界では、PUTはよく使われる。リソースを“完全に”置き換えるのが目的だから。」

「じゃあ、PATCHは?」

「PATCHは部分的な修正。『あのときの手紙、最後の一文だけ訂正させて』みたいな感じだね。」

「それなら、現実的かも。」

「最後はDELETE。これは、完全な別れの手紙。“君のことはもう削除する。記憶のリソースから。”」

美咲は少し黙っていた。グラスの氷がまた小さな音を立てた。

「……私はDELETEの手紙、まだ出せたことないかもしれない」

「誰だってそうだよ。DELETEは重い処理だ。取り消しは効かない。だからこそ、ちゃんと考えて送らないといけない。」

彼女は黙って僕の書いた単語を見ていた。そして、小さく頷いた。

「ねえ、REST APIって、なんだか人間の感情に似てるのね。」

「そう。冷たいようでいて、きちんとルールを守っていれば、すごく美しいやりとりができるんだ。」

その夜も、僕たちは長い時間を過ごした。話はREST APIのことだったけれど、どこか僕たち自身のことでもあった。

前回

次回

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?