Fetch APIを利用してGET, POST通信する際にコピペで利用できるようにメモ
(TypeScript, json responseを想定)
any型については臨機応変に指定しましょう。
fetch本体
デフォルトのmethodはGETとして、GETの場合は URLSearchParams() でendpointにqueryパラメータを、POSTの場合は bodyパラメータにJSON.stringify()したオブジェクトを付与します。
const api = async (url: string, method: string = 'GET', params?: any): Promise<any> => {
let endpoint = url;
if (method === 'GET') {
endpoint = `${endpoint}?${new URLSearchParams(params)}`
}
return await fetch(endpoint, {
method,
body: method === 'POST' ? JSON.stringify(params) : null,
headers: {
accept: 'application/json',
},
});
}
GET呼び出し元
export const getData = async (page: number = 1, pageSize: number = 50, data?: any): Promise<any> => {
const response = await api(
'https://httpbin.org/',
'GET', // <- optional
{ page, pageSize, data }
);
return response.json();
}
POST呼び出し元
export const postData = async (data: any): Promise<any> => {
const response = await api(
'https://httpbin.org',
'POST',
data
);
return response.json();
}