본문 바로가기

restful api

(4)
[서점 프로젝트] API 설계 이번에는 구성한 화면을 바탕으로 필요한 API를 설계하기 위해 포스팅을 하였습니다.리소스를 명확하게 분리하고 HTTP 메소드를 규칙에 맞게 사용하는 것에 중점을 두고 설계하고자 했습니다.📗 회원회원 가입과 탈퇴는 사용자 자원을 생성하고 삭제하는 작업이므로,각 메소드 규칙에 맞춰서 다음과 같이 생성했습니다.# 회원 가입POST /users# 회원 탈퇴DELETE /users 📗 인증처음에는 로그인과 로그아웃도 회원 가입과 같은 URL을 사용하려고 했습니다.하지만, 사용자 자원을 직접적으로 생성하고 삭제하지 않기 때문에별도의 인증이라는 자원을 만들어 사용하는 것이 적합하다고 생각했습니다.# 사용자 인증을 처리하는 요청POST /auth/login# 사용자 세션을 종료하는 요청DELETE /auth/log..
[Express] 같은 경로의 핸들러 묶기 API는 같은 주소지만 HTTP 메소드를 다르게 하여 다양한 기능을 할 수 있습니다.동일한 주소를 하나로 묶어서 관리할 수는 없을까요?두 가지 예제를 보면서 알아보겠습니다.app.get('/event/:n', (req, res) => { // n회차 이벤트 당첨자 출력});app.post('/event/:n', (req, res) => { // n회차 이벤트 당첨자 생성});app.put('/event/:n', (req, res) => { // n회차 이벤트 당첨자 수정});app.delete('/event/:n', (req, res) => { // n회차 이벤트 당첨자 삭제});매우 직관적인 단일 라우트 방식입니다.동일한 경로에 대한 처리이다 보니 반복되는 코드가 많습니다.그럼 동일한 경로를 관..
회원 API 설계하기 이제는 어느 웹 서비스를 방문해도 로그인 페이지가 있는 것을 확인할 수 있습니다.로그인, 회원 가입, 회원 정보, 회원 탈퇴는 어떻게 설계해야 할까요?🔗 HTTP 메소드데이터를 처리하는 방식을 보통 CRUD라고 부릅니다.서버에서 데이터를 어떻게 처리하는지에 따라서 메소드를 정의할 수 있습니다.CRUDReadCreateUpdateDeleteHTTP 메소드GETPOSTPUTDELETE로그인 기능은 어떤 메소드를 사용해야 할까요?로그인을 할 때는 아이디와 패스워드를 입력합니다.이 정보를 주소창에 노출하면 상대적으로 위험할 수 있으니 POST를 사용하겠습니다. 🔗 URL회원 가입: /join로그인: /login회원 정보: /users/{id}회원 탈퇴: /users/{id} 🔗 요청 파라미터회원 가입: 아..
나도 설명하고 싶다! REST API 오랜만에 만난 친구랑 대화하다가 이런 질문을 받았습니다.근데, REST API가 뭘 만드는 거야?머리로는 이해한다고 생각했는데, 입이 안 떼어지는 경험 다들 있으신가요?🤐대충 얼버무렸던 그 날의 기억이 떠올라 포스팅을 적게 되었습니다.로이 필딩은 박사 학위 논문에서 웹(HTTP)을 위한 아키텍처로 REST를 소개했습니다.저는 '아키텍처니까 HTTP를 어떻게 구성하고 동작시킬지에 대한 설계도구나' 정도로 이해했습니다.이제 REST API 설계에 대해 조금 더 자세히 알아볼까요? ✍설계할 때는 크게 두 가지를 명심!정보의 자원은 URI로 표현합니다.자원에 대한 행위는 HTTP 메소드로 표현합니다. 🔍 URI 설계 규칙을 알아보자계층 관계는 슬래시를 활용하여 표현합니다. 그리고, 혼동을 방지하여 경로 마지..