์คํ๋ง ๋ถํธ์ ๊ฒฝ์ฐ ์คํ๋ง๊ณผ ๋น๊ตํ์ฌ ์์ฃผ ์ฌํํ๊ฒ API์๋ฒ๋ฅผ ๊ตฌ์ถํด๋ณผ ์ ์๋ค.
๋ค๋ง ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ํ๋ก์ ํธ์ ์์ด๋ ๋ณต์ก๋๊ฐ ๋ฌ๋ผ์ง๋ค.
1. ์์ฒ ๋ฐ์ดํฐ์ ํํ : RDBMS, NoSQL, Hadoop ๋ฑ
: ์ด๋ ํ ๊ณณ์์ ์์ฒ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ํด๋ผ์ด์ธํธ์ ๋ณด๋ด์ค์ง ์ ํด์ผ ํ๋ค.
2. ์บ์ ๋ฐ์ดํฐ ์ฌ์ฉ ์ฌ๋ถ
: ํด๋ผ์ด์ธํธ์ ์ ๋ณด ์์ฒญ์ ๋ฐ์๋๋ง๋ค ๊ณ์ ์์ฒ๋ฐ์ดํฐ๋ฅผ ์๋กญ๊ฒ ์ฝ์ด๋ค์ผ ๊ฒ์ธ์ง, ๊ทธ๋ ๊ฒ ๊ณ์ Readํ์ฌ ์ค์๊ฐ์ผ๋ก ์ต์ ์ ๋ณด๋ฅผ ๋ฆฌํดํ ํ์๊ฐ ์๋์ง ( ์๋ฅผ๋ค์ด 1์๊ฐ ์ฃผ๊ธฐ๋ก๋ง ๊ฐฑ์ ์ ๋ณด๋ฅผ ๋ฆฌํดํด๋ ๋๋ค๋ ๊ฐ ํ๋ )๋ฅผ ์ ํด์ผ ํ๋ค.
3. HTTP ๋ฉ์๋ ๋ฐฉ์ : restful์ธ๊ฐ ์๋๊ฐ
: API์ฃผ์๋ฅผ ์กฐ๊ธ ๋ ๋ช ํํ๊ณ ์ ํํํ์ฌ ์ฒ๋ฆฌํ๋๊ฒ ๋ชฉ์ ์ ๋ restful api๋ฐฉ์์ ์ต๊ทผ์๋ ์ ํธํ๋ค.
4. ์ ๊ทผ ์ ์ด : ๋ณด์์ฒ๋ฆฌ ๋ฐ ์ฌ์ฉ์ ์ ์ด
: ์ต๋ช ์ ์ฌ์ฉ์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ฒ ํ ๊ฒ์ธ๊ฐ ์๋๊ฐ์ ๋ฐ๋ผ ๋ณด์ ์ ์ฑ ๋ฐ ์ฌ์ฉ์ ๊ตฌ๋ถ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ค.
ํ๋ก์ ํธ ์์ฑ
์ธํ ๋ฆฌ์ ์ด๋ฅผ ์คํํ์ฌ 'Create New Project' - ์ผ์ชฝ์์ 'Maven' ์ ํํ 'Name'์์ฑ ํ Next
ํ๋ก์ ํธ ๊ธฐ๋ณธ ๊ตฌ์ฑํ์ธ ๋ฐ ์์
ํ๋ก์ ํธ ์์ฑ ํ ๋ฐ๋ก ๋ณด์ด๋ pom.xml์ ๋ค์๊ณผ ๊ฐ์ด ์์ (parent, dependencies, build)ํ์ฌ ์คํ๋ง ๋ถํธ ์์กด์ฑ ์ถ๊ฐ
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sentilab</groupId>
<artifactId>sentilabHadoop</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
์ดํ ์ค๋ฅธ์ชฝ ์๋จ์ ๋ณด์ด๋ refresh ํด๋ฆญํ์ฌ ์ ์ฉ
< ๋ค์๊ณผ ๊ฐ์ด ํ๋ก์ ํธ ๊ตฌ์กฐ ์์ฑ >
1) src-main-java ์์ package ์์ฑ
2) ์์ฑํ package ๋ด์ startApp , ApiController : JAVA CLASS ์์ฑ
startApp Class ์์ : SpringBoot ํฅ์ผ๋ก ๋ณ๊ฒฝ
package com.restapi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class starApp {
public static void main(String[] args) {
// SpringApplication์ ์คํํ๊ฒ ๋ค.
SpringApplication.run(starApp.class, args);
}
}
- ํต์ฌ
- @SpringBootApplication ์ด๋ ธํ ์ด์ ์ถ๊ฐ
- main ํด๋์ค์ SpringApplication.run ์ถ๊ฐ
๐ก ์คํ ํ๊ฒ ๋ง๋ค๊ธฐ
1. ์๋จ 'Add Configuration' ํด๋ฆญ
2. ํ์ ์ข์ธก +๋ฒํผ ํด๋ฆญํ์ฌ SpringBoot ์ ํ ( ์ธํ ๋ฆฌ์ ์ด ์ปค๋ฎค๋ํฐ ๋ฒ์ ์์๋ ์คํ๋ง๋ถํธ ๋ณด์ด์ง ์์ )
3. ์๋จ Name ๋ณ๊ฒฝ ํ, ์ค์ Build and run ํญ์
์ฌ์ง์์ com.restapi.startApp ์นธ์ ๋งจ ์ค๋ฅธ์ชฝ $ ์ ํํ์ฌ ์ฌ์ง์ฒ๋ผ startApp ์ ํ
4. ๋น๋๋ฅผ ์คํํ์ฌ ๊ฒฐ๊ณผ ํ์ธ
๐ก Rest Api ์ ์ฉ
1. ์์ฑํ๋ ApiController ํด๋์ค์ ๋ค์๊ณผ ๊ฐ์ด ๊ธฐ๋ณธ์ ์ธ APIํธ์ถ ๋ฆฌํด ํด๋์ค๋ฅผ ์์ฑํ๊ณ ์ฑ ์ฌ์์
package com.restapi;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ApiController {
@RequestMapping(value="/api/test",method = RequestMethod.GET)
@ResponseStatus(value= HttpStatus.OK)
public String getApiTest(){
return "{\"result\":\"test\"}"; // json type ๋ฐํ
// /api/test ์ฃผ์๋ฅผ ํธ์ถํ๋ฉด -> return์ ์๋ ๊ฐ์ ๋๋ ค์ฃผ๊ฒ ๋ค.
}
// localhost:8080/api/test
}
2. localhost:8080/api/test ์ ์ํ์ฌ ์ ์์ ์ผ๋ก ๊ฒฐ๊ณผ ๋ฐํํด์ฃผ๋ ํ์ธ