DAY 03

yejichoi·2022년 11월 3일
0

CodeCamp

목록 보기
3/11
post-thumbnail

1. Algorithm Self Study

조건문

function temperature(num){
if( num <= 18 ) {
    console.log("조금 춥네요.");

  } else if( num <= 23 ) {
    console.log("날씨가 좋네요.");

  } else {
    console.log("조금 덥습니다.");
  }
}
function days(month) {
	if( 
			month === 1 
		 || month === 3 
		 || month === 5 
     || month === 7
		 || month === 8
		 || month === 10
		 || month === 12
	) {
		return 31;

	} else if( month === 2 ) {
		return 28;

	} else if( 
		month === 4 
 || month === 6 
 || month === 9 
 || month === 11
) {
		return 30;
	}
}

// 1월 : 31일
// 2월 : 28일
// 3월 : 31일
// 4월 : 30일
// 5월 : 31일
// 6월 : 30일
// 7월 : 31일
// 8월 : 31일
// 9월 : 30일
// 10월 : 31일
// 11월 : 30일
// 12월 : 31일

2. Backend Class

HTTP와 Rest-API / GraphQL-API

HTTP란 HyperText Transfer Protocol의 약자로 두 컴퓨터간에 텍스트 데이터를 주고 받는 길

  • FTP 파일
  • SMTP 간단한 메일
  • HTTP 텍스트 / 하이퍼텍스트

HTTP 요청(Request)
웹브라우저에서 홈페이지(Front-end 컴퓨터)가 실행중이라면
작성한 게시물 텍스트 데이터를 HTTP를 통해 Back-end 컴퓨터로 보내고 , Back-end 컴퓨터에게 이 데이터를 데이터베이스에 저장 해달라고 요청
=> 프론트엔드가 백엔드로 요청

HTTP 응답(Response)
Back-end 컴퓨터가 성공, 실패 등 처리 결과를 응답

상태 코드
Back-end 컴퓨터는 응답할 때, HTTP 상태 코드 라는 것도 함께 보내줌
HTTP 상태 코드는 100~ 599까지의 숫자로 구성되어 있음
i.e) 성공(200), Front-end 에러(400), Back-end 에러(500)


API

HTTP 요청을 Back-end 컴퓨터에 보냈을 때 실행되는 Back-end 기능 => 즉, 함수

Rest / Rest-API

  • 가장 많이 사용 / 좁은 의미로 HTTP를 통해 CRUD를 실행하는 API

  • REpresentational State Transfer

  • API 이름이 마치 홈페이지 주소
    i.e) https://www.naver.com/board/1, https://www.naver.com/profile/철수

  • 모든 Resource (자료, User, …) 들을 하나의 Endpoint 에 연결

  • 응답 결과 => 모든 결과

  • HTTP Method(post,get,put,delete)를 통해 해당자원에 대한 CRUD Operation을 적용하는 것을 의미

  • 요청담당자(Front-end에서 설치하는 라이브러리)는 axios

// REST API는 그 형식(주소) 만으로 대략 무슨 요청인지 알 수 있음
글 관련 API = /posts
글 작성 = POST /posts
글 수정 = PATCH /posts/[postid]
글 삭제 = DELETE /posts/[postid]
댓글 관련 API = /posts/[postid]/comments
댓글 작성 = POST /posts/[postid]/comments
댓글 수정 = PATCH /posts/[postid]/comments/[commentid]
댓글 삭제 = DELETE /posts/[postid]/comments/[commentid]

RESTful

RESTful는 REST를 REST답게 쓰기 위한 방법으로 누군가가 공식적으로 발표한 것이 아니라 여러 개발자들이 비공식적으로 의견을 제시한 것
조건을 만족하는 API를 RESTful API => 해당 방식으로 작성하는 것을 RESTful 하다고 함
i.e) 슬래시를 통해 계층관계를 표시, 숫자는 id를 나타냄

Axios

브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리

Postman => REST API (

API 개발을 보다 빠르고 쉽게 구현 할 수 있도록 도와주며, 개발된 API를 테스트하여 문서화 또는 공유 할 수 있도록 도와 주는 플랫폼
프론트엔드가 사용

Swagger

Rest-API를 위한 설명서
다른 개발팀과 협업을 진행할 때
이미 구축되어있는 프로젝트에 대한 유지보수를 진행할 때
백엔드의 API를 호출하는 프론트엔드 프로그램을 제작할 떄

Express

Node에서 쉽게 웹 서버를 개발할 수 있도록 도와주는 프레임워크(nodeJS를 사용한 REST 서버를 편리하게 구현하게 해주는 프레임워크)


GraphQL / GraphQL-API

  • Facebook에서 만든 쿼리 언어(Graph Query Language) => 최신(facebook, airbnb, github 사용)
  • 기존 사용중인 RESTful API를 보완하기 위해 만들어짐
  • API 이름이 일반적인 함수 i.e) board(1), profile("철수")
  • 응답 결과 => 필요한 데이터만 골라서 받기 효율적
  • 요청담당자는 apollo-client
  • Apollo란?
    Apollo는 GraphQL을 사용할 수 있도록 도와주는 라이브러리
    기존에 Node.js에서 사용하는 Express와 역할이 비슷
    ApolloServer : GraphQL이 적용된 서버를 쉽게 만들어줌
    ApolloClient : GraphQL을 통해, 클라이언트상의 LocalState를 이용할 수 있게 만들어줌

API와 CRUD

**CRUD란?
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말. 사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신)을 가리키는 용어로서도 사용

> API 요청 결과 타입(JSON) => 문자열
Javascript Object Notation
{
작성자: "훈이",
제목: "좋은 아침입니다"
}

Playground

GraphQL-API를 위한 설명서

선택 : GraphQL or RESTful API
RESTful
HTTP 와 HTTPs 에 의한 캐싱(Caching)을 사용하고 싶을 때
File 전송 등 단순한 Text 로 처리되지 않는 요청들이 있을 때
요청의 구조가 명확하게 정해져 있을 때 즉, 요구사항 변동이 거의 없을 때
GraphQL
서로 다른 모양의 다양한 요청들에 대해 응답할 수 있어야 할 때
대부분의 요청이 CRUD에 해당할 때


HTTP 요청 메시지

  • 시작 라인
    • HTTP 메서드 (GET, POST 등)
    • 요청 엔드포인트 ('/board')
    • HTTP 버전
  • 헤더
    • Host : 요청을 보내는 브라우저의 주소
    • Content-Type : 응답하는 메시지의 내용이 어떤 종류인지

HTTP 응답 메시지

  • 시작 라인
    • HTTP 버전
    • HTTP 상태 코드 (200, 400, 500 등)
  • 헤더
    • Content-Type : 응답하는 메시지의 내용이 어떤 종류인지

3. HW

* GRAPHQL 연습하기 Lv.1 (playground)

잘 모를 때에는 DOCS를 확인하여 문법 체크

300번 게시글의 내용과 작성일이 무엇인가요?(내용과 작성일만 조회해 주세요.)

본인의 이름으로 게시글을 작성해 보세요.

자신의 프로필을 조회해 보세요.

  • 각주 처리는 '#'

본인의 프로필에서, 학교를 자신이 졸업한 초등학교로 바꿔보세요.

  • mutation으로 생성하거나 수정, 삭제할 때 message 만 반환되게 출력함

0개의 댓글