먹깨비의 일상🍣
article thumbnail
728x90
반응형

 

클라이언트와 서버의 소통방법은 요청 메소드와 응답코드가 존재합니다.

컴퓨터 HTTP 통신에서 클라이언트와 서버는 각각 답장에 메소드와 응답 코드라는 도장을 찍어 보냅니다.


요청 메소드의 종류


예시) Java

import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();

        // GET 요청
        HttpRequest getRequest = HttpRequest.newBuilder()
            .uri(new URI("https://www.example.com"))
            .GET()
            .build();
        HttpResponse<String> getResponse = client.send(getRequest, HttpResponse.BodyHandlers.ofString());
        System.out.println(getResponse.body());

        // POST 요청
        HttpRequest postRequest = HttpRequest.newBuilder()
            .uri(new URI("https://www.example.com"))
            .POST(HttpRequest.BodyPublishers.ofString("key=value"))
            .build();
        HttpResponse<String> postResponse = client.send(postRequest, HttpResponse.BodyHandlers.ofString());
        System.out.println(postResponse.body());

        // PUT 요청
        HttpRequest putRequest = HttpRequest.newBuilder()
            .uri(new URI("https://www.example.com"))
            .PUT(HttpRequest.BodyPublishers.ofString("key=value"))
            .build();
        HttpResponse<String> putResponse = client.send(putRequest, HttpResponse.BodyHandlers.ofString());
        System.out.println(putResponse.body());

        // DELETE 요청
        HttpRequest deleteRequest = HttpRequest.newBuilder()
            .uri(new URI("https://www.example.com"))
            .DELETE()
            .build();
        HttpResponse<String> deleteResponse = client.send(deleteRequest, HttpResponse.BodyHandlers.ofString());
        System.out.println(deleteResponse.statusCode());
    }
}

 


예시) Python

import requests

# GET 요청
response = requests.get('https://www.example.com')
print(response.text)

# POST 요청
response = requests.post('https://www.example.com', data = {'key':'value'})
print(response.text)

# PUT 요청
response = requests.put('https://www.example.com', data = {'key':'value'})
print(response.text)

# DELETE 요청
response = requests.delete('https://www.example.com')
print(response.status_code)

GET: 브라우저에서 웹사이트에 접속할 때 보내는 요청이며, 서버로부터 데이터를 가져오기 위해 사용합니다.


POST: 서버에 데이터를 저장될 자료를 보내고, 새 게시물을 작성할 때 사용합니다.


PUT: 특정 데이터 전체를 새로 저장하고, 게시물을 수정할 때 사용합니다.


DELETE: 서버의 특정 데이터를 삭제할 때 사용합니다.


HEAD: 서버 리소스의 헤더(메타 데이터)를 가져옵니다.


OPTIONS: 리소스가 지원하고 있는 메소드를 허용하는지 물어보기 위해 사용합니다.


PATCH: 리소스의 일부분을 수정합니다.


CONNECT: 프록시 동작의 터널 접속을 변경합니다.


응답 코드의 종류


HTTP 응답 코드는 요청이 성공적으로 완료되었는지 알려주고,

100의 자리 숫자로 각각의 요청이 어떤 결과물을 반환했는지 확인합니다.


정보 응답 (Information responses: 100번대):

 서버가 요청을 받았으며, 서버에 연결된 클라이언트는 작업을 계속 진행하라는 의미입니다.



성공 응답 (Successful responses: 200번대):

 요청이 성공적으로 처리되었습니다.

[200]: 요청이 성공적으로 처리완료.

[201]: 요청이 성공적 처리되었고 그 결과 새로운 리소스 생성완료.

[204]: 성공적으로 처리지만, 답장에 적을 내용 없음.

[206]: 요청에서 지정한 대로, 일부 콘텐츠만 보냄.



리다이렉션 응답 (Redirection messages: 300번대):

 클라이언트가 요청한 리소스가 다른 URI에 있음을 알려줍니다.



클라이언트 에러 응답 (Client error responses: 400번대):

 클라이언트의 요청이 잘못되었거나 처리할 수 없음을 나타냅니다.

[400]: 서버가 요청을 이해하지 못했음.

[401]: Unauthorized 로그인이 필요한 상황에 로그인이 되어있지 않음.

[403]: Forbidden 로그인되어 있지만, 요청을 보낼 권한이 없음.

[404]: Not Found 데이터가 없음 또는 URL이 잘못되어 있을 때 나타남.



서버 에러 응답 (Server error responses: 500번대):

 서버가 유효한 요청을 처리하는 데 실패했음을 나타냅니다.

[500]: 서버 내부에 오류 발생.

[502]: 서버 과부하 또는 기타 네트워크 통신 문제 발생.


 

728x90
반응형
profile

먹깨비의 일상🍣

@먹깨비의 일상

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!