출처: Redhat
💡 API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다.출처: Amazon
기술적 장점
사업적 장점
두 프로세스들이 같은 시스템에 있거나 다른 시스템에 존재하며 네트워크가 둘을 연결하는 형태. 소켓통신이랑 다르게 어플리케이션 계층 소통임.
(호출하는 프로세스랑 호출된 프로세스가 같은 주소 공간에 존재하지 않음)
원격 프로시저 호출 → 클라이언트가 서버에서 함수나 프로시저를 완료 → 서버가 출력을 클라이언트로 다시 전송
단순 객체 접근 프로토콜 (SOAP는 이 자체로 프로토콜임.)
REST는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍쳐
URL ⊂ URI
URI는 식별! 해준다는 게 중요함. .html이나 .pdf 등이 붙지 않아도 URI가 될 수 있음.
헷갈리면 여기
app.get("/books/:id", function (req, res) {
const { id } = req.params;
// 다른 요청 처리 ..
const result = {
title: "Romance of the Three Kingdoms",
author: {
firstName: "Luo",
lastName: "Guanzhong",
},
};
res.send(result);
});
// GET /books/1
fetch("localhost:3000/books/1")
.then((response) =>console.log(response));
Response {status: 200, ok: true, redirected: false, type: "cors", url: "localhost:3000/api/user", …}
// {
// "title": "Romance of the Three Kingdoms",
// "author": {
// "firstName": "Luo",
// "lastName": "Guanzhong"
// }
//}
GraphQL에서는 API서버에서 정의된 endpoint 들에 요청하는 대신 한번의 요청으로 가져오고 싶은 데이터를 가져올 수 있게 해 줌.
// Resolver is a collection of functions that generate
// response for a GraphQL query.
const resolvers = {
Query: {
book: (parent, args) => {
// 다른 요청 처리 ..
const result = {
title: "Romance of the Three Kingdoms",
};
return result;
},
author: (parent, args) => ({ firstName: "Luo", lastName: "Guanzhong" }),
},
};
query {
book(id: "1") {
title
author {
firstName
lastName
}
}
}
//{
// "title": "Romance of the Three Kingdoms",
// "author": {
// "firstName": "Luo",
// "lastName": "Guanzhong"
// }
//}
웹 소켓은 사용자의 브라우저와 서버 사이의 인터액티브 통신 세션을 설정함.
웹 소켓 API를 통해 서버로 메시지를 보내고 서버를 폴링*하지 않고도 이벤트 중심 응답을 받는 것이 가능
// WebSocket 연결 생성
const socket = new WebSocket('ws://localhost:8080');
// 연결이 열리면
socket.addEventListener('open', function (event) {
socket.send('Hello Server!');
});
// 메시지 수신
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
API란?
https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces
https://aws.amazon.com/ko/what-is/api/
비교
https://www.altexsoft.com/blog/soap-vs-rest-vs-graphql-vs-rpc/
https://www.upwork.com/resources/soap-vs-rest-a-look-at-two-different-api-styles
Websocket
https://developer.mozilla.org/ko/docs/Web/API/WebSocket
GraphQL
https://graphql.org/code/#javascript
https://graphql-kr.github.io/learn/queries/
REST API vs GraphQL
https://hwasurr.io/api/rest-graphql-differences/
URL vs URI
https://www.charlezz.com/?p=44767
https://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn
잘 읽었습니다 ㅎㅎ