항해99를 처음 시작하고 첫째 날부터 처음 보는 사람들과 미니 프로젝트를 진행하였다. 항해99에 들어오기 전에는 누군가와 팀을 이루어 협업해본 경험도 없고 혼자서 스프링 부트를 통해 간단한 CRUD 게시판을 만들어 본 것이 전부인 제 자신에게 있어서 누군가와 프로젝트를 진행하는 것에 대한 즐거움을 알 수 있게 해주는 시간이었던 것 같다.
select
와 option
태그를 사용하여 '년', '월', '일'을 따로 받아 DB에 넘겨주었었다. 이후 기술 매니저님과의 멘토링을 통해 날짜 순서대로 스케줄을 정렬하기 원했던 저희 입장에서 한번에 DB로 넘겨주는 것이 어떻냐 하셨고 해당 멘토링을 통해 <input type="date">
를 통해 달력을 만들어 한번에 DB에 값을 보내도록 수정하였다. 다시와서 생각해보니 DB에 데이터를 넘길때 뿐만 아니라 사용자들이 데이터를 입력할 때도 년, 월, 일 세 개의 옵션을 클릭하는 것 보다 달력을 찾아 한 번 클릭하는 것이 훨씬 편할 것 같다는 생각이 들었다! 날짜를 받기 위한 기존 와이어프레임
수정 후
JWT는 인가(Authorization, 인증을 받은 사용자가 이후 서비스를 사용할 때 이를 허가)와 관련된 기술이다.
토큰은 인코딩 또는 암호화 된 3가지 데이터(Header, Payload, Verify Signature)를 이어붙인 형식으로 구성되어 있고 .으로 각각 구분된다.
- 토큰 예시
출처 : https://jwt.io/
type
과 Verify Signature를 만드는데 사용될 알고리즘이 지정된 alg
이 지정된다. Header와 Payload 그리고 비밀 키를 통해 Verify Signature 값을 만들 수 있다. Verify Signature과 계산 값이 일치하고 유효기간이 지나지 않았다면 해당 사용자는 로그인된 회원으로서 인가를 받을 수 있다. 따라서 서버는 사용자의 상태를 모르고(stateless) 비밀 키를 통해 사용자에게 인가를 해줄 수 있다.API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다.
...
API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다. API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다.
출처 : https://aws.amazon.com/ko/what-is/api/ (AWS)
즉 API란 프로그램(코드)들이 서로 소통하는(데이터를 주고받는) 방법이다.
Ex) 웹툰서비스 API
웹툰서비스 API는 웹툰 서버와 손님이 웹툰을 주고받기 위한 방법이다.
위 정의에서 언급하였 듯이 API는 코드들이 서로 소통하는 방법이기 때문에 사용자가 웹툰을 보기 위해서는 코드들을 작성해야 한다. ( 참교육 웹툰을 보기위한 GET 요청, comic.naver.com/webtoon/list?titleId=758037&weekday=mon )
하지만 실제 사용자들은 직접 코드를 작성하지 않는다. 브라우저를 통해 웹툰 이미지, 제목을 누르면 자동으로 그에 해당하는 API를 요청하게 할 수 있도록 한다(웹툰 페이지에서 참교육 제목 또는 이미지를 클릭).
REST(Representational State Transfer) API
HTTP 프로토콜을 통해 API를 설계하기 위한 아키텍처 스타일로 정보들을 주고 받는데 있어서 개발자들이 널리 쓰이는 형식이다.
RESTful API
RESTFUL이란 REST의 원리를 따르는 시스템을 의미한다. REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있다.