2025-04-28
@RestController
๋ ์คํ๋ง์์ RESTful API๋ฅผ ๊ตฌํํ ๋ ์ฌ์ฉํ๋ ์ด๋
ธํ
์ด์
.<!-- RESTCONTROLLER ๊ด๋ จ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.19.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.19.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.19.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.19.0</version>
</dependency>
jackson-datatype-jsr310
์ Java 8์ LocalDateTime
์ง์.์ปจํธ๋กค๋ฌ ๊ธฐ๋ณธ ๊ฒฝ๋ก:
@RequestMapping("/rest")
โ ๋ชจ๋ API ํธ์ถ ์ /rest
๋ก ์์
@GetMapping(value = "/getText", produces = MediaType.TEXT_PLAIN_VALUE)
public String f1() {
return "HELLO WORLD";
}
GET http://localhost:8080/rest/getText
text/plain
HELLO WORLD
@GetMapping(value = "/getJson", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public MemoDto f2() {
return new MemoDto(11, "ABCD", "FFFF", LocalDateTime.now());
}
GET http://localhost:8080/rest/getJson
application/json
{
"id": 11,
"text": "ABCD",
"writer": "FFFF",
"createAt": [2025, 4, 28, 10, 39, 23, 310212300]
}
@GetMapping(value = "/getXml", produces = MediaType.APPLICATION_XML_VALUE)
public MemoDto f3() {
return new MemoDto(11, "ABCD", "FFFF", LocalDateTime.now());
}
GET http://localhost:8080/rest/getXml
application/xml
<MemoDto>
<id>11</id>
<text>ABCD</text>
<writer>FFFF</writer>
<createAt>2025</createAt>
...
</MemoDto>
@GetMapping(value = "/getXmlList", produces = MediaType.APPLICATION_XML_VALUE)
public List<MemoDto> f4() {
// ๋ฆฌ์คํธ ์์ฑ ํ ๋ฐํ
}
GET http://localhost:8080/rest/getXmlList
application/xml
<List>
<item>
<id>0</id>
<text>A0</text>
...
</item>
<item>
<id>1</id>
<text>A1</text>
...
</item>
</List>
@GetMapping(value = "/getXmlList2/{show}", produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<List<MemoDto>> f5(@PathVariable("show") boolean show) {
// ์กฐ๊ฑด๋ถ ๋ฐํ
}
GET http://localhost:8080/rest/getXmlList2/true
GET http://localhost:8080/rest/getXmlList2/false
/true
: HTTP 200 OK + XML ๋ฆฌ์คํธ ๋ฐํ/false
: HTTP 502 Bad Gateway ๋ฐํjava
@GetMapping("/home/test")
@ResponseBody
public String test() {
return "{\"message\":\"REST DATA TEST\"}";
}
@Controller
์์๋ ๋ฉ์๋ ๋จ์๋ก REST ๋ฐฉ์ ๊ตฌํ ๊ฐ๋ฅ.GET http://localhost:8080/home/test
json
๋ณต์ฌํธ์ง
{"message":"REST DATA TEST"}
produces
์ค์ ์ ๋ฐ๋ผ ๋ค์ํ ํ์์ผ๋ก ์๋ต ๊ฐ๋ฅ.ResponseEntity
๋ฅผ ํตํด ์ํ ์ฝ๋๊น์ง ์ธ๋ฐํ๊ฒ ์ ์ด.