text/Java

http API server (w/o spring)

hoonzii 2024. 9. 28. 11:25
반응형

지난번에 이어 과제테스트에 대한 짤막한 구현을 작성해보고자 한다.

저번 게시글에서는 springboot로 간단하게 api를 구현했는데

short url

 

short url

인스타로 시간 열심히 녹이던 중, 재밌는 게시물을 봤다. 취업할 때 회사에서 이런 과제테스트를낸다고 하던데…  이걸보고 심심하던 차 한번 구현해보고 싶어졌다.아래에 텍스트로 다시 정리

hoonzi-text.tistory.com

 

이번엔 좀 당황스러운 경우를 만나 해당 케이스에 대해 적어본다….

 

요즘 회사들중 면접 시 과제테스트를 실시하는 회사들에 대비해서 P사에서

모의로 테스트 볼수 있게 만들어 놨다.

 

 

vscode server를 통해 과제 내용을 구현하게 되는데

과제테스트를 봐본적 없는 나로서는 해당 환경이 처음이었다.

intellij 혹은 eclipse가 없고, 게다가 spring 환경을 처음부터 구성해야하는게 당황스러웠다.

 

 

모의테스트였지만 30분의 시간제한이 있었고

우왕좌왕 구성하느라 대부분의 시간을 써버리고 말았다. 물론 과제사항에 대해 구현하지 못했다.

그래서 이럴땐 어떻게 해야 하나 찾아보면서 작성해 본다.

 

 

 

아주 간단한 http api 서버를 구성하려면 어떻게 해야 할까?

java의 HttpServer를 사용하면 된다.

https://docs.oracle.com/javase/8/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/HttpServer.html

 

HttpServer (Java HTTP Server )

This class implements a simple HTTP server. A HttpServer is bound to an IP address and port number and listens for incoming TCP connections from clients on this address. The sub-class HttpsServer implements a server which handles HTTPS requests. One or mor

docs.oracle.com

 

import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpServer;

public static void main(String[] args) {
    int port = 5678;
    InetSocketAddress address = new InetSocketAddress(port);
    HttpServer httpServer = HttpServer.create(address, 0);
    httpServer.start();
}

위와 같이 구성시 실행하면 서버가 뜬다. 대신 요청 시 처리할 handler가 없기에 404가 뜬다.

 

GET 요청은 아래와 같이 간단히 만들 수 있다.

// customHandler를 구현하는 경우 
httpServer.createContext("/", customHandler);

//or

//내부에 바로 구성하려면
httpServer.createContext("/", (exchange) -> {
	// HttpExchange 객체를 받는 람다를 구성
	//...
});

HttpHandler를 상속하는 클래스를 구현해서 HttpExchange 값을 받아 처리하게끔 구현하면 된다.

(키워드만 알면 이렇게 쉽게 구현할 수 있는데…spring만 아는 바보…)

 

“/” 경로로 요청하면 단순하게 “Hello”를 보내주는 api를 구성해 보면 아래와 같다.

httpServer.createContext("/", (exchange) -> {
    String sendData = "Hello";
    byte[] bytes = sendData.getBytes();
    exchange.sendResponseHeaders(200, bytes.length);
    OutputStream outputStream = exchange.getResponseBody();
    outputStream.write(bytes);
    outputStream.flush();
});

 

 

전체 코드는 아래

 

api-httpserver-java/demo at main · hoonzinope/api-httpserver-java

java httpserver api 구현 기본 구조. Contribute to hoonzinope/api-httpserver-java development by creating an account on GitHub.

github.com

 

참고 링크

 

Java HTTP Server 를 이용해서 훨씬 더 쉽게 HTTP Server 를 만들어보자

Java HTTP ServerJava NIOJava Lambda expression(람다식)Java Functional interface(함수형 인터페이스)HTTP 에 대해서 간단히 알아보고 직접 구현해보자.웹의 핵심 요소인 HTTP는 웹 개발자에게 있어서 필수적으로

velog.io

 

반응형