
아직 개념이 잘 이해가 안돼서 그런가 RESTful API랑 fetch API의 차이가 뭔지 모르겠다.
정확히 어떤 경우에 쓰는지도 잘 모르겠고..ㅜ
애초에 이 둘이 비교 대상인지부터 헷갈린다 😵💫그리고 오늘 팀 스크럼 시간에 인터넷 연결이 안좋아서 그런지 계속 끊겼는데, 나는 멈춘 것도 모르고 혼자 열심히 말고하고 있었다…ㅋㅎ 다른분들이 계속 웃으시길래 내 얘기가 그렇게 웃긴가..? 했는데 그냥 혼자 떠들고 있는 바보였다. 나혼자 인터넷 세상에(?) 떨어진거 같아서 굉장히 외로웠다는…ㅎ
REST 아키텍처를 스타일을 따르는 API를 의미한다.
HTTP 프로토콜을 기반으로 동작하고, 자원을 URI로 표현하고, HTTP 메서드를 사용해서 자원을 조작하는 방식의 API를 의미한다.
URI(Uniform Resource Identifier) → 정형화된 자원 식별자
게시글 CRUD
GET /posts/{postId}
POST /posts/
PATCH. /posts/{postId}
DELETE. /posts/{postId}
정형화된 응답을 주는 것
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status#successful_responses
응답 상태 코드
@GetMapping("/{postId}")
//@ResponseStatus(HttpStatus.OK)
public ResponseEntity<Post> findById(@PathVariable Long postId) {
log.info("Find post by id: {}", postId);
Post findPost = postRepository.findById(postId);
return ResponseEntity.status(HttpStatus.OK).body(findPost);
}
@ResponseStatus(HttpStatus.*OK*) 대신
return ResponseEntity.*status*(HttpStatus.*OK*).body(findPost); 로
응답코드와 body를 함께 반환해줄 수 있음
HTML 뼈대, CSS 는 살, JS는 숨결(?)
변수 생성
재선언이 가능
함수 스코프를 지님 → **var로 선언된 변수는 코드의 최상단으로 올라가는 호이스팅**이 적용됨
이 경우에 첫번째 줄의 콘솔이 출력됨
상수 = 한 번 값이 할당되면 변경할 수 없는 데이터를 저장하는 메모리 공간
JS 에서는 함수를 1급 객체로 취급하고 다룬다. → 값으로 취급
const hello = function () {
console.log("hello world!");
};
function greet(fn) {
fn();
}
greet(hello);
function greet() {
return function () {
console.log("hello world!");
};
}
const hello = greet();
hello();
(자바의 lambda같은 느낌)
const 함수이름 = () = > body;
function fn1(fn, val) {
return fn(val);
}
const fn1result = fn1(num => num * num, 5);
함수와 그 함수가 선언될 때의 스코프를 기억하는 기능
function createCounter() {
let count = 0;
return function() {
count += 1;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 1
JS의 객체는 키 : 값 의 형태로 생김
const object = {
name: "송희수"
}
object.name 으로 호출JavaScript Object Notation
{
"key": "value"
}
브라우저를 이용하는 사용자가 웹페이지와 상호작용할때 발생하는 여러 사건들
이벤트를 어디까지 적용할지 잘 정하는게 중요
preventdefault();로 멈출 수 있음
null과 undefined는 값이 없다는 것은 같아서 ==는 true가 나오지만 ===는 false가 나옴function hello() {
console.log("hello");
}
---
let sayHello = hello;
---
sayHello();
---
> VM1041:2 hello
(function() { console. log ("Hello World!") }) ();
function fn1(fn, val) {
return fn(val);
}
------
const fn1re = fn1((num) => num*num, 3);
------
console.log(fn1re);
------
> VM1423:1 9
const ac = {
"eat": function() { console. log ("Hello") }
} ;
요청한 작업에 대해 완료 여부를 신경 써서 작업을 순차적으로 수행할지 아닌지에 대한 관점
논리적으로 I/O 작업으로부터 돌아올 결과를 기다리고 처리를 한다.논리적으로 I/O 작업이 일어나는 동안 다른 작업을 수행할 수 있다.비동기 작업의 상태를 나타내기 위한 객체
내부적으로 3가지 상태를 가짐
fetch(url, option)
.then(onFulfilled => { ... })
.catch(onRejected => { ... });
서버와 통신할 때

<button>갱신</button>
<script src="/js/api.js"></script> → HTML 파일에 js파일의 경로를 알려줘야 함