- ์ฝ๋ก๋19๋ก ์ธํด ์ง๋ฐฅ์ ์์๊ฐ ์ฆ๊ฐ
- ๊ธฐ์กด ๋ ์ํผ ์ดํ๋ก ๋ ์ํผ๋ฅผ ๋ณด๋ฉฐ ์๋ฆฌ๋ฅผ ํ ์ ํฐ์น๋ก ์ ์ด๋ฅผ ํด์ผ๋์ด ์์ ์๋ ์์๋ค์ด ์คํฌ๋ฆฐ์ ๋ฌป์
- ๋ฐ์ฝ๋/QR์ฝ๋ ๋ฑ์ ์ด์ฉํด ์์ฝ๊ฒ ์ ํ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๊ฒ ํจ
- ๋์ฅ๊ณ ์์ ์์ฌ๋ฃ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์์ ๋ ์ํผ๋ฅผ ์ถ์ฒํด ์ ํต๊ธฐํ์ด ์๋ฐํ ์ฌ๋ฃ๋ค์ ์ฌ์ฉํ ์ ์๋๋ก ์ ๋
- ๋ฉ์ธ ์๋ฒ: Amazon aws Ec2(http://ec2-43-200-41-187.ap-northeast-2.compute.amazonaws.com:8080/)
- ์๋ฐ Version:JDK 17
- gradle Version : gradle-6.9
- DataBase:
- version: MySQL 8.0.28
- Amazon RDS
- ํ๋ ์์ํฌ: SpringBoot
- Tool: IntelliJ(์ฝ๋ ์์ฑ IDE), PostMan(API ํ ์คํธ), MySql
- ํ์๊ฐ์ /๋ก๊ทธ์ธ
- ํ์์ ๋ณด ์์ /์ญ์ (ํํด)
- ์์ฌ๋ฃ ๋ฆฌ์คํธ ๊ด๋ฆฌ(Using jpa)
- ๋ ์ํผ ๋ถ๋ฌ์ค๊ธฐ
- ๋ ์ํผ์ ๋ค์ด๊ฐ๋ ์ฌ๋ฃ ๋ถ๋ฌ์ค๊ธฐ
- ๋ ์ํผ ์กฐ๋ฆฌ ์์ ๋ถ๋ฌ์ค๊ธฐ
- ์ฌ์ฉ์๊ฐ ์์ฑํ ๋ ์ํผ๋ฅผ DB์ ๋ฑ๋ก
- flask ์ฑ๋ด ์๋ฒ์์ ํต์
- flask์๋ฒ์ ํต์ ์ํด intent๋ฅผ flask์๋ฒ๋ก ์ ๋ฌ
- flask ์๋ฒ์์ ๋ถ๋ฅํด์ค response๋ฅผ ๋ค์ app์ผ๋ก ์ ๋ฌ
- ๋ง๋ค์ด ๋์ ํ๋ฉด๋ณ ํ๋กํ ํ์ ์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ํด๋น ํ๋ฉด์ ํ์ํ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ๊ฑฐ๋ ๊ฐ์ ธ์ฌ ์ฟผ๋ฆฌ ์์ฑ
- ์์ฑํ ์ฟผ๋ฆฌ๋ฅผ ๋ฐํ์ผ๋ก SpringBoot ์ฝ๋๋ฅผ ์์ฑํด ๊ฐ๋จํ API ์์ฑ
- ์ฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ํ์๊ฐ์ , ๋ก๊ทธ์ธ API ๋ถํฐ ์์ฑ
- Postman์ ํตํด API ์๋ ํ์ธ
์๋๋ก์ด๋ ํ๊ฒฝ์์ ๊ฐ์ฅ ์ฌ์ฉ์ฑ์ด ์ข์ ๊ตฌ๊ธํ์ด์ด๋ฒ ์ด์ค authentication ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ํ์๊ฐ์ &๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํ ํจ
-FireBaseUser(ํ์ด์ด๋ฒ ์ด์ค์ ๋ฑ๋ก๋ ์ ์ ์ ์ ๋ณด๋ค)
-FireBaseUserDetail(๋ฑ๋ก๋ ์ ์ ์ ์์ธํ ์ ๋ณด๋ค(์ดํ ์ถ์ฒ์์คํ ์ ํ์ฉ))
ํ์ด์ด๋ฒ ์ด์ค๋จ ์์ ์๋์ผ๋ก ์์ฑํด ์ฃผ๋ UID ๊ฐ์ ์ด์ฉํ์ฌ ํด๋นํ๋ ๊ฐ์๊ฐ์ง ์ ์ ,์ ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
-๋ฉ์ธํ๋ฉด(๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ๊ตฌ์ฑ)
-ํ์๊ฐ์
{: width="100" height="100"}
- ํ์๊ฐ์ ๋์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ํ์๊ฐ์ ์ ์ค์ํ๋ฉด
2.ํ์ด์ด๋ฒ ์ด์ค Authentication์ ๋ฑ๋ก์ด ๋๊ณ
3.์๋๋ก์ด๋ app ์์ ๊ทธ ์ ๋ณด๋ค์ JSON ํํ๋ก ์๋ฒ๋จ์ ๋ณด๋ธ๋ค
- ์๋ฒ์์๋ ๊ทธ ์ ๋ณด๋ฅผ ๋ฐ์ DB์ ์ ์ฅ
5.DB์ ์ ์ฅ๋จ
๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ตฌ์กฐ์ ๋ง์ถ์ด 3๊ฐ์ ๋ ์ํผ ๋ฐ์ดํฐ ์ํฐํฐ๋ฅผ ๊ตฌ์ฑํจ
-food list(์ ์ฒด ๋ ์ํผ๋ฅผ ๊ตฌ์ฑํ๋ ์ฉ๋)
-recipe_ingredient(์ ์ฒด ๋ ์ํผ๋ฆฌ์คํธ์์ ์ ํํ ๋ ์ํผ์ ์ฌ๋ฃ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ํฐํฐ)
id๊ฐ,์ฌ๋ฃ์ด๋ฆ,์ฌ๋ฃ์ ์, ์ ํํ ๋ ์ํผ์ id๊ฐ์ ๋ด๋ ์ด 4๊ฐ์ ํ๋๋ก ๊ตฌ์ฑ
-recipe_Cooking(์ ์ฒด ๋ ์ํผ๋ฆฌ์คํธ์์ ์ ํํ ๋ ์ํผ์ ๋จ๊ณ๋ณ ์กฐ๋ฆฌ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ํฐํฐ)
id๊ฐ,ํด๋น์กฐ๋ฆฌ๋จ๊ณ์๋ํ ์ค๋ช ,์กฐ๋ฆฌ ๋จ๊ณ ์์, ์ ํํ ๋ ์ํผ์ id๊ฐ์ ๋ด๋ ์ด 4๊ฐ์ ํ๋๋ก ๊ตฌ์ฑ
์ดํ๋ฆฌ์ผ์ด์ ๋ฐ ์๋ฒ๊ฐ ํต์ ๊ณผ์ ์์์ ํ๋กํ ์ฝ์ json๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก transferํ๋ ๊ฒ์ผ๋ก ์ ํจ
-Recipetoapp Controller
์๋๋ก์ด๋ app ์์ api access point๋ฅผ http://ec2-43-200-41-187.ap-northeast-2.compute.amazonaws.com:8080/android/recipeCooking
์ผ๋ก ์ค์ ํ๊ณ parameter์ โid=1(ex) ๋ก ์ค์ ํ๊ณ request๋ฅผ ๋ณด๋ด๋ฉด
์์๊ฐ์ด mysql๋ก ์์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด์๋ ๋ชจ๋ ๋ ์ํผ์ ์ ๋ณด๋ค์ jpa์ธํฐํ์ด์ค๋ก ๊ฐ์ ธ์ ์๋์ ๊ฐ์ jsonArrayํํ๋ก ๋ฆฌํดํด ์ค๋ค.
{
"recipe_list":
[
{"ID": "0", "Name":"๋ผ๋ฉด","imgsrc":"img1"},
{"ID": "1", "Name":"์งฌ๋ฝ","imgsrc":"img2"}
]
}-๋ค์์ผ๋ก ์ฌ์ฉ์๊ฐ ์ฑ์์ ์์ ์ ๋ ์ํผ๋ฅผ ๋ฑ๋กํ๋ ๊ธฐ๋ฅ์ด๋ค
์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์๊ฐ ๋ ์ํผ๋ฅผ ๋ฑ๋กํ ์ ์๋๋ก API๊ฐ๋ฐ ํ์๋ค
์ฌ์ฉ์๊ฐ ์์ ํ๋ฉด์์ ๋ ์ํผ์ ์ ๋ณด๋ค์ ์ ๋ ฅํ๋ฉด ์ดํ๋ฆฌ์ผ์ด์ ์์ json์ผ๋ก ๋ณํ๋ ์ ๋ณด๋ค์ด parameter๋ก Access Point http://ec2-43-200-41-187.ap-northeast-2.compute.amazonaws.com:8080/android/saveRecipe ๋ก post์์ฒญ๋จ
api์๋ฒ๋ก ๋๊ฒจ์ ธ์จ recipe์ ๋ณด๋ค์ jpa์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ์ฅ
์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ถ๋ด์ ์ค์ด๊ธฐ ์ํด
๋ ์ํผ ์์ฑ์ ์ด ๋ถ๋ถ์ http ํต์ ์
์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์
{โchat_requestโ:โ1โ}โ
์๋ฐ ์คํ๋ง ์๋ฒ
{โchat_requestโ:โ1โ}โ
์ฑ๋ด ์๋ฒ(flask)
์ฑ๋ด ์๋ฒ(flask)
{"chatString":"์ฌ์ฉ์ ๋ช
๋ น์ด stt ๊ฒฐ๊ณผ"}โ
์๋ฐ ์คํ๋ง ์๋ฒ
{"chatString":"์ฌ์ฉ์ ๋ช
๋ น์ด stt ๊ฒฐ๊ณผ"}โ
์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์
๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์กฐํํจ
1)Access point๋ฅผ http://ec2-43-200-41-187.ap-northeast-2.compute.amazonaws.com:8080//getIntent ๋ก ์ค์ ํ๊ณ app์์ ์์ฑ์ ์ ๋ ฅํ๋ค
2)response body์ ์ฌ์ฉ์๊ฐ ๋งํ ์์ฑ string์ด ๋ด๊ฒจ์ ธ์ค๊ณ
@ResponseBody
@PostMapping("")
public String flaskspring(@RequestBody String jsonString,
HttpServletResponse response) throws ParseException, IOException3)flask์๋ฒ์ intent ๊ตฌ๋ถ ์์ฒญ์ post๋ฐฉ์์ผ๋ก ๋ณด๋ธ๋ค
String flask_url = "flask ์ฑ๋ด ์๋ฒ ์ฃผ์";//flask ์๋ฒ URL
URL url = new URL(flask_url);
HttpURLConnection con = (HttpURLConnection) url.openConnection();try(OutputStream os = con.getOutputStream()) {
byte[] input = jsonString.getBytes("utf-8");
os.write(input, 0, input.length);
}4)flask ์ฑ๋ด ์๋ฒ๋ก ๋ถํฐ ๊ตฌ๋ถ๋ intent๋ฅผ ๋ฐ์์ค๊ณ app์ return ํด์ค๋ค
int responseCode = con.getResponseCode();
System.out.println("http"+"response_code : "+responseCode);
System.out.println("http"+"response : "+con.getResponseMessage());reader = new BufferedReader(new InputStreamReader(in));
while((line = reader.readLine())!=null){
result += line;
}
reader.close();
if(con !=null){
con.disconnect();
}
return result;









