GET, POST, PUT, DELETEメソッドの使用方法と違い

http-get-post-put-delete

HTTPリクエストには、さまざまなメソッドがあり、データの取得、送信、更新、削除など、異なる操作を行うことができます。この記事では、HTTPプロトコルでよく使われるGET、POST、PUT、DELETEの4つのメソッドについて、使用方法と違いを説明します。

目次

基本概念の説明

  • GET: データの取得に使用される。冪等性があり、複数回実行しても同じ結果が得られる。
  • POST: 新しいデータを送信してサーバー側で処理を行う。非冪等。
  • PUT: 既存のリソースを更新。冪等性がある。
  • DELETE: リソースを削除。冪等性がある。

GET、POST、PUT、DELETEの違い

メソッド用途特徴リクエストボディ
GETデータの取得安全で冪等性があるなし
POST新しいデータの送信・作成非冪等あり
PUT既存データの更新冪等性があるあり
DELETEリソースの削除冪等性があるなし

各言語でのサンプルコード

Python: GET、POST、PUT、DELETEのリクエスト


import requests

# GETリクエスト
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.json())

# POSTリクエスト
data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print(response.json())

# PUTリクエスト
data = {'id': 1, 'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.put('https://jsonplaceholder.typicode.com/posts/1', json=data)
print(response.json())

# DELETEリクエスト
response = requests.delete('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code)

C#: GET、POST、PUT、DELETEのリクエスト


using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        HttpClient client = new HttpClient();

        // GETリクエスト
        var response = await client.GetAsync("https://jsonplaceholder.typicode.com/posts/1");
        var responseBody = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);

        // POSTリクエスト
        var postData = new StringContent("{\"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}", Encoding.UTF8, "application/json");
        response = await client.PostAsync("https://jsonplaceholder.typicode.com/posts", postData);
        Console.WriteLine(await response.Content.ReadAsStringAsync());

        // PUTリクエスト
        var putData = new StringContent("{\"id\": 1, \"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}", Encoding.UTF8, "application/json");
        response = await client.PutAsync("https://jsonplaceholder.typicode.com/posts/1", putData);
        Console.WriteLine(await response.Content.ReadAsStringAsync());

        // DELETEリクエスト
        response = await client.DeleteAsync("https://jsonplaceholder.typicode.com/posts/1");
        Console.WriteLine(response.StatusCode);
    }
}

C++: GET、POST、PUT、DELETEのリクエスト (CURLを使用)


#include <iostream>
#include <curl/curl.h>

int main() {
    CURL* curl;
    CURLcode res;

    // GETリクエスト
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts/1");
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }

    // POSTリクエスト
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts");
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"title\":\"foo\", \"body\":\"bar\", \"userId\":1}");
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }

    // PUTリクエスト
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts/1");
        curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"id\":1, \"title\":\"foo\", \"body\":\"bar\", \"userId\":1}");
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }

    // DELETEリクエスト
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts/1");
        curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }

    return 0;
}

Java: GET、POST、PUT、DELETEのリクエスト


import java.io.*;
import java.net.*;
import java.nio.charset.StandardCharsets;

public class HttpMethodsExample {
    public static void main(String[] args) throws IOException {
        // GETリクエスト
        HttpURLConnection connection = (HttpURLConnection) new URL("https://jsonplaceholder.typicode.com/posts/1").openConnection();
        connection.setRequestMethod("GET");
        try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
            String inputLine;
            StringBuilder content = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                content.append(inputLine);
            }
            System.out.println(content.toString());
        }

        // POSTリクエスト
        connection = (HttpURLConnection) new URL("https://jsonplaceholder.typicode.com/posts").openConnection();
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        try (OutputStream os = connection.getOutputStream()) {
            byte[] input = "{\"title\":\"foo\", \"body\":\"bar\", \"userId\":1}".getBytes(StandardCharsets.UTF_8);
            os.write(input, 0, input.length);
        }
        try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
            String inputLine;
            StringBuilder content = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                content.append(inputLine);
            }
            System.out.println(content.toString());
        }

        // PUTリクエスト
        connection = (HttpURLConnection) new URL("https://jsonplaceholder.typicode.com/posts/1").openConnection();
        connection.setRequestMethod("PUT");
        connection.setDoOutput(true);
        try (OutputStream os = connection.getOutputStream()) {
            byte[] input = "{\"id\":1, \"title\":\"foo\", \"body\":\"bar\", \"userId\":1}".getBytes(StandardCharsets.UTF_8);
            os.write(input, 0, input.length);
        }
        try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
            String inputLine;
            StringBuilder content = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                content.append(inputLine);
            }
            System.out.println(content.toString());
        }

        // DELETEリクエスト
        connection = (HttpURLConnection) new URL("https://jsonplaceholder.typicode.com/posts/1").openConnection();
        connection.setRequestMethod("DELETE");
        System.out.println(connection.getResponseCode());
    }
}

JavaScript: GET、POST、PUT、DELETEのリクエスト


const axios = require('axios');

// GETリクエスト
axios.get('https://jsonplaceholder.typicode.com/posts/1')
  .then(response => console.log(response.data))
  .catch(error => console.error(error));

// POSTリクエスト
axios.post('https://jsonplaceholder.typicode.com/posts', {
    title: 'foo',
    body: 'bar',
    userId: 1
  })
  .then(response => console.log(response.data))
  .catch(error => console.error(error));

// PUTリクエスト
axios.put('https://jsonplaceholder.typicode.com/posts/1', {
    id: 1,
    title: 'foo',
    body: 'bar',
    userId: 1
  })
  .then(response => console.log(response.data))
  .catch(error => console.error(error));

// DELETEリクエスト
axios.delete('https://jsonplaceholder.typicode.com/posts/1')
  .then(response => console.log(response.status))
  .catch(error => console.error(error));

まとめ

GET、POST、PUT、DELETEメソッドの違いや使用方法について学びました。WebアプリケーションでAPI通信を行う際には、これらのメソッドを正しく使い分けることが重要です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次