💻 Backend

RESTful 설계 방법 / Validation / Server to Server

미미누 2021. 11. 14. 18:51

RESTful한 설계방법은 다음과 같다.

 

1. URI에는 명사 사용하고, 동사 사용은 지양해야 한다.

2. 언더바, 대문자는 사용하지 않는다. (소문자 지양)

3. 슬래시를 통해서 계층관계를 나타낸다.

4. 메소드는 실제 DB에서 동작하는 기준으로 정한다.

5. Delete보다 Patch가 더 적합하다.

 

5번에 대한 예시로는 데이터에 대해서, isDeleted N -> Y로 update가 더 낫고,

삭제는 지양해야 한다. 대부분의 데이터에 경우 업데이트를 통해 상태값만 바꾸고 실제로는 DB에 값이 남아있는 경우가 많다고 한다.

 

예시) RESTful한 URI 예시

GET /students/:studentId/subjects

 


Validation이란 무엇일까?

Validation: 사용자 요청이 서버로 들어왔을 때, 요청이 유효한지 데이터가 유효한지에 대한 데이터 검사

 

validation을 제대로 하지 않으면,

외부에서 비정상 요청을 보내는지, 클라가 실수로 데이터를 보낼때 DB에 저장할 수 있음 → 서버에 오류문구에 db구조가 노출될 수 있다.

 

즉 Validation은 서버가 고장나지 않도록 잘못 사용하는 것을 막는 유효성 검사라고 이해하면 된다.

 

Validation은 클라이언트와 서버 두단계에서 진행된다.

 

예시)20번 데이터를 삭제하는 경우

patch /posts/20

postid = 20인 경우,

  1. postId가 null이 아닌지, 숫자/문자(자료형 체크) 할때 정규표현식을 사용함.

정규표현식이란? 문자열에 패턴이 있는지 찾는 문법

예시) postId가 들어왔을떄 숫자로 들어왔는지, 이메일이 들어왔을 때 @형식으로 들어왔는지 표시

 

회원가입 비밀번호 규칙 또한 정규표현식인데, 각 언어에서 제공하는 숫자 함수나 라이브러리가 있다.

 

2. postId가 post 테이블에 있는지 체크하는 경우

논리적인 로직이 빠지면 어플 에러 가능하기 때문에 Validation 진행

 

3.클라이언트가 요청을 보낼때 사용자 정보가 서버로 전달하고 권한이 있는지 체크하는 경우

 


Server to Server 통신이란 무엇일까?

 

어플리케이션에서 인증번호 보내기, 이메일 보내기와 같은 API는 만들기에 기술적, 시간적으로 어렵다.

그래서 도입된 것이 Server to Server 통신이다.

 

서버에서 다른 서버로 요청할떄 기능을 제공하는 서버를 Third-party Server 라고 한다.

 

Server to Server 예시

 

client(핸드폰 번호 전송) : (문자 인증을 해달라는 요청 보냄)

Server : 이미 구현된 기능을 사용하고 다른 서버로 request(요청) 보내고, 문자 발송 server에서 받음

 

즉, client는 server에 인증번호 보내고, Server는 생성한 인증번호와 사용자가 입력된 인증번호가 맞는지 최종적으로 check한다.

이렇게 서버가 다른 서버로 요청을 보내는 방식이 Server to Server 이다.