SEB_BE 30일차 - HTTP / API

subimm_·2022년 10월 4일
0

코드스테이츠

목록 보기
29/83

Daily coding

for(int i = 1; i < str.length(); i++) {
//getNumericValue = char 형을 int형으로 변환
      int preNumber = Character.getNumericValue(str.charAt(i-1)); //전 숫자
      int curNumber = Character.getNumericValue(str.charAt(i));//현재 숫자
      if(preNumber %2 != 0 && curNumber %2 != 0) { // 둘다 홀수인지 비교
        result = result + "-"; // 맞으면 "-" 넣기
      }
      result = result + str.charAt(i);
    }
    return result;

💡 오늘의 학습목표

  • REST API
  • Postman 실습

📔 REST API

  • 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식

📖 리차드슨의 REST 성숙도 모델

  • REST 성숙도 모델 - 0단계
    단순히 HTTP 프로토콜 사용 (REST API라고 볼 수 없음)
    하나의 End-point 사용 메서드도 POST가 된다.
    • 요청
    POST /api/user
    {
      "function": "getUser",
      "arguments" [
        "1"
      ]
    }
    • 응답
    HTTP/1.1 200 OK
    {
      "result" {
        "id": "1"
        "name": "subin",
      }
    }
  • REST 성숙도 모델 - 1단계
    개별 리소스와의 통신을 준수(개별 리소스에 맞는 엔드포인트 사용)
    받은 자원에 대한 정보를 응답으로 전달
    적절한 엔드포인트 작성이 중요 ( 동사, HTTP메서드, 어떤 행위에 대한 단어 사용은 지양)
    리소스에 집중해 명사 형태의 단어로 작성하는 것이 좋다.

    GET과 POST만 사용

    • 요청
    POST /api/users/create
    {
      "name": "subin"
    }
    • 응답
    HTTP/1.1 200 OK
    {
      "result" {
        "error": "already exist member"
      }
    }
  • REST 성숙도 모델 - 2단계 (잘 작성된 API)
    CRUD에 맞게 적절한 HTTP메서드를 사용하는것에 중점.
  1. GET 메서드는 서버의 데이터를 변화시키지 않는 요청에 사용
  2. POST는 요청마다 새로운 리소스 생성, PUT은 요청마다 같은 리소스 반환 (멱등성 구분해서 사용)
  3. PUT은 교체 PATCH는 수정, 구분해서 사용
    • 요청
    POST /api/users
    {
      "name": "subin"
    }
    • 응답
    HTTP/1.1 201 Created //응답 코드도 명확하게 작성 
    Content-Type: application/json
    {
      "result" {
        "id": "1",
        "name": "subin"
      }
    }
    • CRUD
    CREATE : POST /api/users
    READ :   GET /api/users/1
    UPDATE : PUT /api/users/1
    DELETE : DELETE /api/users/1
  • REST 성숙도 모델 - 3단계
    HATEOAS라는 하이퍼미디어 컨트롤 적용
    응답에 리소스의 URI를 포함한 링크 요소(응답을 받은 다음에 할 수 있는 다양한 액션)를 삽입하여 작성
    • 요청
    GET /api/users/1
    • 응답
    HTTP/1.1 200 OK
    Content-Type: application/json
    {
     "result" {
        "id": "1",
        "name": "subin",
        "_links": {
          "self" : {
            "href" : "https:/api/users/1"
          },
          "update" : {
            "href" : "https:/api/users/1"
          },
          "list" : {
            "href" : "https:/api/users/"
          },
      }
    }

API

  • root-endpoint(root-URL): API로 요청을 서버와 통신할 때, 서버가 요청을 수락하는 시작점
  • path : API를 통해 서버와 통신할 때, 서버와 통신할 수 있는 key 역할

Open API

공공데이터 포털 https://www.data.go.kr/
날씨 데이터 https://openweathermap.org/

Postman 실습

  • postman 사용해보기
  • 서울의 날씨 데이터

🔍 URI / URL 차이 알아보기

회고

오랜만에 회고를 쓴다. 코로나가 다시 걸려서 너무 힘들다ㅠㅠ 그래도 학습은 밀리지 말자고 생각하고 하는데 스프링 강의도 먼저 듣고 싶은데 그럴 시간이 없다,,그래도 스프링 시작 전까지는 조금 널널할 것 같아서 다행이다.

profile
코린이의 공부 일지

0개의 댓글