TIL 7週目REST API
📌 REST API
REST?
4つのHTTPメソッドによりapiを設計する.
rest apiはWebの通信規約HTTPを使用しているので、HTTPメソッドを使用しています.
HTTP URI(Uniform Resource Identifier)によってリソースが識別され、HTTPメソッド(POST、GET、PUT、PATCH、DELETE)によってそのリソースに対してCRUD操作が適用されることを示す.
すなわち、RESTは、リソースインフラストラクチャ(ROA,Resource Oriented Architecture)の設計の中心がリソースであることを意味し、HTTP方式でリソースを処理するように設計されている
REST API
RESTの特性に基づいてAPIを提供する
開発者がHTTPリクエストの送信に使用する方法
RESTful API
RESTfulはRESTの非公式実施ガイドラインである.必ず従わなければならないルールを作成して公表するのではなく、複数の開発者が非公式に意見を出す集合、すなわち開発者ごとに考えているRESTfulの内容が異なる可能性がある.
REST API推奨
1)HTTP通信を行う場合,リソースはURIにより識別される.
2)行動はHTTP法(POST,GET,DELETE,PUT,PATCH)により行われる.
3)結果は応答コード(201403~~)で告知する.
ex) http://example.com/topics
URIはその情報の名称を識別するだけであり,その情報を加工できる必要がある.これを方法とする.
📌 CRUD
GET
POST
const onAddClick = () => {
fetch("http://localhost:3001/days/", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
id: Date.now(),
day: days.length + 1,
}),
}).then(res => {
if (res.ok) {
alert("저장 완료");
history.push("/");
}
});
};
PUT
const onChange = () => {
fetch(`http://localhost:3001/words/${word.id}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
...word,
isDone: !isDone,
}),
}).then(res => {
if (res.ok) {
setIsDone(!isDone);
}
});
};
Patch
DELETE
const onDelClick = () => {
if (window.confirm("are your sure?")) {
fetch(`http://localhost:3001/words/${word.id}`, {
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
}).then(res => {
if (res.ok) {
setWord({
...word,
id: 0,
});
}
});
}
};
if (word.id === 0) {
return null;
}
関係
リソースとリソースの関係.
topics(부모)/1(부모의 element id)/comments(자식)
// topics의 1번 인덱스가 comments를 포함한다
このように表現します.📌 ステータスコードステータスコード
:102:処理:要求の処理中
:201:created:リクエストの作成に成功したリソース
:204:no content:要求を実行するリソースですが、コンテンツはありません.
:302:他の場所への一時的な移行を要求
:303:getリクエストでのみ使用されます.302と同様です.
:307:postリクエストのみを一時的に別の場所に移動
:308:他の場所に永続的に移動
:401:ログインしていない場合は、認証されていないユーザからのリクエスト
:403:特定の日付の権限がない場合(ログインしていますが、制限があります)
:404:urlが存在しない場合
:405:urlの使用が許可されていない場合
:409:クライアントが作成するリソースがすでに存在しているか、競合している場合
:502:中間サーバ応答の問題
:503:サーバが特定のurlを処理する準備ができていない場合
Reference
この問題について(TIL 7週目REST API), 我々は、より多くの情報をここで見つけました https://velog.io/@ellie12/TIL-7주차-REST-APIテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol