1. 용도에 맞게 HTTP 메서드 사용하기

  • GET : 조회
    • /product  : 상품 목록을 조회한다.(가져온다.)
    • /product/123 : 상품들중 인덱스가 123인 상품 정보를 조회한다.
  • POST: 생성, 기타행동 ( GET, PUT, PATCH, DELETE 로 표현하기 어려운 행동)
    • /products : 상품정보를 등록한다.
  • PUT, PATCH : 수정
    • /products /123 : 상품들 중 인덱스가 123인 상품 정보를 수정한다.
    •  
  • DELETE : 삭제
    • /products/123 : 상품들 중 인덱스가 123인 상품 정보를 삭제한다.

2. Resource(리소스: 명사들이 모여서 만들어진 자원) 간의 계층관계는 슬래시 ( / )를 이용하기

[GET] /posts/123/comments   // PK가 123인 게시글의 댓글의 목록을 불러온다.
  • 계층관계는 일반적으로 동사 대신에 명사를 사용 
    • 복수명사 사용 -> 리소스는 (여기에선) 명사들이 모여서사용되어질수 있는 어떤 자원(항목)
    • 하이픈(-)사용 ->URL은 하이퍼 링크가 걸리면밑줄(_)이 그어지는 경우가 많다 
    • 소문자로 작성 -> 일관성과 가독성

3. HTTP Method 별 Request Body 사용 여부

GET, DELETE 의 HTTP 메서드는 보통 Request Body에 데이터를 담지 않는다. 대부분의 웹 서버및 프레임워크에서도 Request Boby를 무시하고 요청하는 경우가 많다. 따라서 GET, DELETE의 HTTP 메서드를 사용할 때는 Query Parameter 나 Path Parameter를 활용하자.

 

4. Path , Query Parameter 사용 시기

▶ Path parameter

  1. 어떤 리소스를 식별하고 싶거나
  2. 다수의 리소스중 특정 리소스를 가르키는 경우 사용
  • /users/12 [GET] : // 모든 사용자 중 PK가 12인 사용자를 가져온다.

▶ Query Patameter :

  1. 필터링 GET
    • /car?size = middle (빨간색 자동차 목록을 반환)
  2. 정렬  GET  
    • /users?sort=name&order=asc (사용자 목록을 name을 기준으로 오름차순으로 정렬해서 조회) 
  3. 검색 GET
    • /movies/search?query=john (john이라는 키워드가 들어간 영화 목록을 조회
  4. 페이지네이션 GET
    • /posts?page=1&size=5 ( 1페이지에서  5개의 게시물 목록을 조회

 

응답방법

  • res.send( );
    • ( ) 안에 배열 오브젝트를 입력하면 Json 형태로 응답
    • ( ) 안에 배열, 오브젝으를 string 타입으로 입력하면 문자형태로 응답
  • 상태코드 직접설정해서 응답
    • res.status(200).send();

요청 데이터 사용 방법

  • body 에 있는 데이터 이용
    • req.body
  • Query parameter( /search?key=value)이용
    • req.query
// http://localhost:3000/users?page=1 와 같은 형태로 요청할때 사용
app.get('/users', (req, res) => {
  console.log(req.query); // {page : "1"}
});
  • Path variable
    • req.params
//  http://localhost:3000/users/1 
app.get('/users/:userId', (req, res) => {
  console.log(req.params); // {userId: "1"}
});

✔︎ 라우팅이란

URI 이나 HTTP 요청메소드에  클라이언트가 요청을 했을 때 어떻게 서버가 응답할지 결정하는 것.

 

라우팅이 되었다 →클라이언트가 URI 에 보낸 코드(HTTP Method 를 이용해서 만든)가 정상적으로 작동했다.

 

URI and HTTP METHOD 정보 링크

 

라우팅하는 방법-GitHub링크

 

사용하는 이유??

HTTP response status codes 는  특정 HTTP 요청(HTTP request)이 성공적으로 완료되었는지 확인하기 위해 사용한다.

 

각 번대의 의미

  • 200번대 : 성공
  • 400번대: 클라이언트 실패
  • 500번대 서버 실패

자주?쓰이는 상태별 응답번호

200  :  Ok                                요청이 성공적으로 처리되었다.

  • 로그인, 데이터 조회 성공

201   :  Created                        새로운 리소스가 생성되었다. 

  • 게시글 작성, 회원가입, 댓글 작성 성공

204  :  No content                 응답 본문(Response Body)가 없을때 사용.

  • 게시글 삭제( 응답 본문이 없는 경우에 한함. 몇 개의 게시글이 삭제되었는지 응답해준다면 200 으로 응답 

401 : Unauthorized              로그인 하지않은(인증 되지 않은) 사용자가 요청을 보낸 경우

  • 로그인 시 아이디 또는 비밀번호 틀린경우, Header에 인증된 값(ex. JWT 토큰)을 활용해 요청을 보낸경우

403  : Forbidden    로그인 했지만(인증은 했지만) 접근 권한이 부족한 경우에 403응답

  • 관리자만 접근할 수 있는 API에 ‘일반 사용자의 인증값(ex. JWT 토큰)’을 활용해 요청을 보낸 경우

 

404  : Not Found                  클라이언트가 요청한 리소스를 찾을 수 없는 경우에 반환된다.

  • 존재하지 않는 API에 요청을 보내경우 
  • /product/123 [GET}  -->123인 상품이 존재하지 않는 경우

409  : Conflict                       클라이언트의 요청이 서버의 현재 상태와 충돌하는 경우

  • 중복된 리소시 생성시 : 아이디, 닉네임이 이미 존재하는 경우.
  • 동시에 여러 클라이언트가 동일한 리소스 수정요청을 보낸 경우
  • 이전 요청이 아직 완료되지 않은 경우에 다시 요청을 보낸경우

400  : Bad Request               클라이언트의 요청이 잘못된 경우, 401, 403, 404, 409 응답 코드에 해당되지 않을 때 사용

  • 필수 매개변수가 누락
  • 데이터 형식/타입 이 잘못된 형식
  • 잘못된 쿼리 매개변수가 전달된 경우
  • 요청의 형식이 잘못된 경우 ( 올바른 JSON 포멧이 아닌경우

500  : Internal Server Error  클라이언트에서 요청은 전부 잘 했는데, 서버 문제로 응답을 제대로 못한 경우

  • 클라이언트가 제대로 된 방법으로 요청했는데, 서버에서 예외처리 또는 비지니스 로직 처리를 잘못해서 응답을 하지 못한 경우

 

 

 

 

→ 종류가 너무 많다. 필요한 코드는 아래 참고자료를 보자

 

 

참고자료

- 코드별로 의미설명

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

 

HTTP response status codes - HTTP | MDN

HTTP response status codes indicate whether a specific HTTP request has been successfully completed. Responses are grouped in five classes:

developer.mozilla.org

 

 HTTP 요청 URI 

  •  URI : 서버한테 요청을 보내는 곳의 주소 ( ex) 우편보낼때 쓰는 주소 같은역할)
    • URI외에도 URL, URN도 있지만 이것은 나중에
  • Query Parameter (=Query string)
    • 리소스를 검색/필터링 하는 경우 사용
    • ?를 이용해서 사용자(?!)가 입력한 데이터를 서버에 전달하여 
    • ?파라미터(key)=값 & 파라미터(key)=값&... 이런식
      • https://velog.io/search?q=dev&username=xxxx
      • https://www.google.com/search?q=variable
const express = require('express');
const app = express();
const port = 3000;

app.get('/users', (req, res) => {
  console.log(req.query);
})

app.listen(port, () => {
  console.log(`서버가 실행됩니다. http://localhost:${port}`);
})
const express = require('express');
const app = express();
const port = 3000;

app.get('/users/:userId', (req, res) => {
  console.log(req.params);
})

app.listen(port, () => {
  console.log(`서버가 실행됩니다. http://localhost:${port}`);
})

 

 HTTP 요청 메서드 

  • GET : 데이터 조회
  • POST : 데이터 생성 ( 결제, 로그인, 회원가입 등)
  • PUT : 특정 데이터 전체를 교체할 때(수정할 때)
  • PATCH : 특정 데이터의 일부를 교체할 때 (수정할 때)
  • DELETE : 데이터를 삭제할 때

     ▶ PUT 과 PATCH 예시 (https://papababo.tistory.com/entry/HTTP-METHOD-PUT-vs-PATCH-%EC%B0%A8%EC%9D%B4%EC%A0%90)

 HTTP 요청 메세지 

  • HTTP Header
  • HTTP Body

Back-end 서버에서 만든 API가 잘 작동하는 지 테스트가 필요한데, 인터넷 창에서는 한계가 있으므로 이때 필요한 것이 아래에 있다↓

 Postman(포스맨) 

사용법링크

 

💽 POSTMAN 사용법 - API 테스트 자동화 고급 활용까지

포스트맨 (POSTMAN) POSTMAN은 API를 개발, 테스트, 공유 및 문서화하는 데 사용되는 API 클라이언트 이다. 엔드 포인트 URL을 입력하는 테스트에 사용되며 서버로 요청을 보내고 서버에서 응답을 받아 a

inpa.tistory.com

 

'프로그래밍 > Node.js' 카테고리의 다른 글

REST API : 경로 Naming, HTTP Method  (0) 2023.07.26
응답방법/요청 데이터 사용법  (0) 2023.07.25
Express Routing(라우팅)  (0) 2023.07.25
HTTP response status codes(상태코드)  (0) 2023.07.24
Express 로 웹서버 구축  (0) 2023.07.14

+ Recent posts