58. API

송민경's avatar
Apr 02, 2024
58. API

1. HTTP & HTTP

  • 인터넷에서 정보를 주고 받을 때 사용되는 프로토콜
  • 웹 브라우저와 웹 서버 간의 통신 담당
  • 포트 443을 사용하여 통신
포트 80을 사용하면 443으로 리다이렉션(307) 됨
300번대는 리다이렉션
 
HTTP (Hypertext Transfer Protocol)
  • 웹 브라우저와 웹 서버 간의 데이터 전송을 위한 텍스트 기반의 프로토콜
  • 보안 기능이 부족하며, 데이터가 암호화되지 않기 때문에 중간자 공격에 취약
  • 주로 웹 페이지 로드, 이미지, 동영상 등의 데이터를 전송할 때 사용
  • 보안 기능이 부족하고 데이터가 암호화되지 않기 때문에 공개키 사용 안함
HTTPS (Hypertext Transfer Protocol Secure)
  • HTTP의 보안된 버전
데이터 전송 중에 암호화를 제공하여 보안 강화
  • TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer) 프로토콜을 사용
→ 데이터를 암호화하고, 이를 통해 정보의 안전한 전송 보장
  • 서버와의 통신을 보호하기 위해 공개키 암호화를 사용
공개키 : 서버 인증서에 포함
주로 서버에서 클라이언트로 전송
클라이언트(예: 웹 브라우저) - 서버로부터 전송된 인증서를 수신
인증서에 포함된 공개키를 사용하여 통신을 암호화
  • 웹 브라우저 : HTTPS로 액세스하는 웹 사이트의 서버 인증서를 검색해서 사용
  • 민감한 정보를 전송하는 웹사이트(로그인, 결제 등)나 인터넷 상의 기밀 정보 전송에 사용
notion image

2. API 문서

  • 공통코드
code : 1 통신 정상 code : -1 통신 실패
  • 회원가입
요청 주소 (POST) - http://localhost:8080/join 요청 파라미터 - application/json { "username":"getinthere", "password":"1234", "email":"getinthere@nate.com" } 응답 바디 - application/json { "code": 1, "msg": "회원가입완료", "data": { "id": 3, "username": "getinthere", "password": null, "email": "getinthere@nate.com", "created": "2021-07-10T07:45:15.764705", "updated": "2021-07-10T07:45:15.764705" } }
  • 로그인
요청 주소 (POST) - http://localhost:8080/login 요청 파라미터 - application/json { "username":"getinthere", "password":"1234" } 응답 헤더 Authorization : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjb3PthqDtgbAiLCJpZCI6MywiZXhwIjoxNjI1ODc0Mzk1fQ.u_pUd7mwmE0KWWV_o7QDPkGg7Nyo_avYOwYwI5ZdIWluMltXfECQyYq9nVPzXGFZz89mOYLmYMazeYgfZwgVMw 응답 바디 - application/json { "code": 1, "msg": "success", "data": { "id": 3, "username": "getinthere", "password": "1234", "email": "getinthere@nate.com", "created": [ 2021, 7, 10, 7, 45, 15, 764705000 ], "updated": [ 2021, 7, 10, 7, 45, 15, 764705000 ] } }
  • 회원정보수정
요청 주소 (PUT) - http://localhost:8080/user/3 요청 헤더 Authorization : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjb3PthqDtgbAiLCJpZCI6MywiZXhwIjoxNjI1ODc0Mzk1fQ.u_pUd7mwmE0KWWV_o7QDPkGg7Nyo_avYOwYwI5ZdIWluMltXfECQyYq9nVPzXGFZz89mOYLmYMazeYgfZwgVMw 요청 파라미터 - application/json { "password":"5678", "email":"getinthere@gmail.com" } 응답 바디 - application/json { "code": 1, "msg": "회원정보수정완료", "data": { "id": 3, "username": "getinthere", "password": "5678", "email": "getinthere@gmail.com", "created": "2021-07-10T07:45:15.764705", "updated": "2021-07-10T07:50:13.7016973" } }
  • 회원정보 한건보기
요청 주소 (GET) - http://localhost:8080/user/3 요청 헤더 Authorization : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjb3PthqDtgbAiLCJpZCI6MywiZXhwIjoxNjI1ODc0Mzk1fQ.u_pUd7mwmE0KWWV_o7QDPkGg7Nyo_avYOwYwI5ZdIWluMltXfECQyYq9nVPzXGFZz89mOYLmYMazeYgfZwgVMw 응답 바디 - application/json { "code": 1, "msg": "회원정보확인완료", "data": { "id": 3, "username": "getinthere", "password": "1234", "email": "getinthere@nate.com", "created": "2021-07-10T08:06:24.483245", "updated": "2021-07-10T08:06:24.483245" } }
  • 게시글 목록보기
요청 주소 (GET) - http://localhost:8080/post 요청 헤더 Authorization : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjb3PthqDtgbAiLCJpZCI6MywiZXhwIjoxNjI1ODc0Mzk1fQ.u_pUd7mwmE0KWWV_o7QDPkGg7Nyo_avYOwYwI5ZdIWluMltXfECQyYq9nVPzXGFZz89mOYLmYMazeYgfZwgVMw 응답 바디 - application/json { "code": 1, "msg": "목록보기완료", "data": [ { "id": 5, "title": "제목5", "content": "내용5", "user": { "id": 2, "username": "cos", "password": "1234", "email": "cos@nate.com", "created": "2021-07-10T08:05:49.039117", "updated": "2021-07-10T08:05:49.039117" }, "created": "2021-07-10T08:05:49.069037", "updated": "2021-07-10T08:05:49.069037" }, { "id": 4, "title": "제목4", "content": "내용4", "user": { "id": 2, "username": "cos", "password": "1234", "email": "cos@nate.com", "created": "2021-07-10T08:05:49.039117", "updated": "2021-07-10T08:05:49.039117" }, "created": "2021-07-10T08:05:49.068049", "updated": "2021-07-10T08:05:49.068049" }, { "id": 3, "title": "제목3", "content": "내용3", "user": { "id": 1, "username": "ssar", "password": "1234", "email": "ssar@nate.com", "created": "2021-07-10T08:05:49.0082", "updated": "2021-07-10T08:05:49.0082" }, "created": "2021-07-10T08:05:49.062057", "updated": "2021-07-10T08:05:49.062057" }, { "id": 2, "title": "제목2", "content": "내용2", "user": { "id": 1, "username": "ssar", "password": "1234", "email": "ssar@nate.com", "created": "2021-07-10T08:05:49.0082", "updated": "2021-07-10T08:05:49.0082" }, "created": "2021-07-10T08:05:49.060063", "updated": "2021-07-10T08:05:49.060063" }, { "id": 1, "title": "제목1", "content": "내용1", "user": { "id": 1, "username": "ssar", "password": "1234", "email": "ssar@nate.com", "created": "2021-07-10T08:05:49.0082", "updated": "2021-07-10T08:05:49.0082" }, "created": "2021-07-10T08:05:49.057069", "updated": "2021-07-10T08:05:49.057069" } ] }
  • 게시글 한건보기
요청 주소 (GET) - http://localhost:8080/post/1 요청 헤더 Authorization : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjb3PthqDtgbAiLCJpZCI6MywiZXhwIjoxNjI1ODc0Mzk1fQ.u_pUd7mwmE0KWWV_o7QDPkGg7Nyo_avYOwYwI5ZdIWluMltXfECQyYq9nVPzXGFZz89mOYLmYMazeYgfZwgVMw 응답 바디 - application/json { "code": 1, "msg": "상세보기완료", "data": { "id": 1, "title": "제목1", "content": "내용1", "user": { "id": 1, "username": "ssar", "password": "1234", "email": "ssar@nate.com", "created": "2021-07-10T08:05:49.0082", "updated": "2021-07-10T08:05:49.0082" }, "created": "2021-07-10T08:05:49.057069", "updated": "2021-07-10T08:05:49.057069" } }
  • 게시글 쓰기
요청 주소 (POST) - http://localhost:8080/post 요청 바디 - application/json { "title":"제목6", "content":"내용6" } 요청 헤더 Authorization : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjb3PthqDtgbAiLCJpZCI6MywiZXhwIjoxNjI1ODc0Mzk1fQ.u_pUd7mwmE0KWWV_o7QDPkGg7Nyo_avYOwYwI5ZdIWluMltXfECQyYq9nVPzXGFZz89mOYLmYMazeYgfZwgVMw 응답 바디 - application/json { "code": 1, "msg": "글쓰기완료", "data": { "id": 6, "title": "제목6", "content": "내용6", "user": { "id": 3, "username": "getinthere", "password": "1234", "email": "getinthere@nate.com", "created": "2021-07-10T08:06:24.483245", "updated": "2021-07-10T08:06:24.483245" }, "created": "2021-07-10T08:11:05.5290593", "updated": "2021-07-10T08:11:05.5290593" } }
  • 게시글 수정하기
요청 주소 (PUT) - http://localhost:8080/post/6 요청 바디 - application/json { "title":"제목변경", "content":"내용변경" } 요청 헤더 Authorization : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjb3PthqDtgbAiLCJpZCI6MywiZXhwIjoxNjI1ODc0Mzk1fQ.u_pUd7mwmE0KWWV_o7QDPkGg7Nyo_avYOwYwI5ZdIWluMltXfECQyYq9nVPzXGFZz89mOYLmYMazeYgfZwgVMw 응답 바디 - application/json { "code": 1, "msg": "수정하기완료", "data": { "id": 6, "title": "제목변경", "content": "내용변경", "user": { "id": 3, "username": "getinthere", "password": "1234", "email": "getinthere@nate.com", "created": "2021-07-10T08:06:24.483245", "updated": "2021-07-10T08:06:24.483245" }, "created": "2021-07-10T08:11:05.529059", "updated": "2021-07-10T08:11:52.9494383" } }
  • 게시글 삭제하기
요청 주소 (DELETE) - http://localhost:8080/post/6 요청 헤더 Authorization : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjb3PthqDtgbAiLCJpZCI6MywiZXhwIjoxNjI1ODc0Mzk1fQ.u_pUd7mwmE0KWWV_o7QDPkGg7Nyo_avYOwYwI5ZdIWluMltXfECQyYq9nVPzXGFZz89mOYLmYMazeYgfZwgVMw 응답 바디 - application/json { "code": 1, "msg": "삭제하기완료", "data": null }

3. JWT 서버 Git 자료

4. 완성 플러터 GetX git 자료

 
Share article

vosw1