JSON-RPC는 JavaScript Object Notation Remote Procedure Call의 약자로, 네트워크를 통해 함수 호출을 가능하게 해주는 프로토콜입니다. 이 방법은 클라이언트와 서버 간의 통신에 이용될 수 있으며, 주로 웹 애플리케이션에서 서버와 데이터를 주고받는 데에 사용됩니다.
1. JSON-RPC의 기본 개념
JSON-RPC는 HTTP, TCP 등의 프로토콜을 통해 클라이언트와 서버가 JSON 형식의 데이터를 주고받는 방식입니다. 클라이언트는 JSON-RPC 요청을 보내고, 서버는 요청을 처리하여 결과를 반환합니다. 이는 클라이언트와 서버 간의 애플리케이션 로직을 분할하여 개발하고, 네트워크를 통해 연결되는 이점을 제공합니다.
JSON-RPC는 다음과 같은 요소로 구성됩니다:
- 리퀘스트(Request): 클라이언트가 서버에 보내는 요청
- 리스폰스(Response): 서버가 클라이언트에게 보내는 응답
- 메서드(Method): 클라이언트가 호출할 수 있는 함수
- 파라미터(Parameters): 메서드에 전달되는 인자 값
- ID: 리퀘스트와 리스폰스의 고유 식별자
2. JSON-RPC 사용 방법
JSON-RPC를 사용하려면 클라이언트에서 서버로 요청을 보내는 코드와, 서버에서 해당 요청을 처리하는 코드가 필요합니다. 아래는 간단한 예제 코드입니다.
클라이언트 측 코드
const request = {
jsonrpc: "2.0",
method: "multiply",
params: { x: 5, y: 2 },
id: 1
};
fetch("/jsonrpc", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(request)
})
.then(response => response.json())
.then(data => {
console.log(data.result);
});
서버 측 코드
const jsonRpcHandler = (request) => {
switch (request.method) {
case "multiply":
const result = request.params.x * request.params.y;
return {
jsonrpc: "2.0",
result: result,
id: request.id
};
default:
return {
jsonrpc: "2.0",
error: "Method not found",
id: request.id
};
}
};
app.post("/jsonrpc", (req, res) => {
const request = req.body;
const response = jsonRpcHandler(request);
res.json(response);
});
위의 예제 코드에서는 클라이언트는 /jsonrpc
URL로 POST 요청을 보내며, 서버에서는 해당 요청을 처리하여 결과를 리턴합니다. 클라이언트는 클라이언트 측 코드에서 새로운 request를 만들고, fetch
를 이용해 서버로 요청을 보냅니다. 서버는 서버 측 코드에서 app.post
를 이용해 클라이언트로부터의 요청을 받고, 해당 요청을 처리한 후 응답을 보냅니다.
이 예제는 간단한 곱셈 함수를 호출하는 것이지만, JSON-RPC를 활용하면 복잡한 데이터 및 애플리케이션 로직을 클라이언트와 서버 간에 효율적으로 주고받을 수 있습니다.
JSON-RPC는 널리 알려져 있고 다양한 라이브러리와 프레임워크에서 지원되므로, 필요에 따라 선택적으로 사용할 수 있습니다.
JSON-RPC는 클라이언트와 서버 간의 통신을 단순하게 만들어주며, JavaScript를 사용하여 데이터를 주고받는 데에 적합한 프로토콜입니다. JSON-RPC를 사용하면 클라이언트와 서버 사이의 데이터 흐름을 효율적으로 관리할 수 있으며, 복잡한 애플리케이션 개발에 유용합니다.