Skip to content
ย 
ย 

Latest commit

ย 

History

33 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Spring- Server

2022~23 ๊ฐ€์ฒœ๋Œ€ํ•™๊ต ์†Œํ”„ํŠธ์›จ์–ดํ•™๊ณผ ์กธ์—…์ž‘ํ’ˆ

ํ”„๋กœ์ ํŠธ ๋ฐฐ๊ฒฝ ๋ฐ ๋™๊ธฐ

  • ์ฝ”๋กœ๋‚˜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

์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ๋„

238176748-fe53ca2f-b814-4e43-8fd5-3bc4b1f5df6e

ERD ๊ตฌ์„ฑ๋„

DB์—์„œ entity๋“ค์˜ ๊ด€๊ณ„๋ณด์—ฌ์ฃผ๋Š” uml์ด๋‚˜ ์‹œ๊ฐ์ž๋ฃŒ๋ฅผ ์ฒจ๋ถ€ ํ•  ์˜ˆ์ •(ํšŒ์› DB๊ฐ€ ์ •๋ฆฝ๋˜๋ฉด update)

๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ ๋ชฉ๋ก

  • ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ
  • ํšŒ์›์ •๋ณด ์ˆ˜์ •/์‚ญ์ œ(ํƒˆํ‡ด)
  • ์‹์žฌ๋ฃŒ ๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ(Using jpa)
    • ๋ ˆ์‹œํ”ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • ๋ ˆ์‹œํ”ผ์— ๋“ค์–ด๊ฐ€๋Š” ์žฌ๋ฃŒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • ๋ ˆ์‹œํ”ผ ์กฐ๋ฆฌ ์ˆœ์„œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ ˆ์‹œํ”ผ๋ฅผ DB์— ๋“ฑ๋ก
  • flask ์ฑ—๋ด‡ ์„œ๋ฒ„์™€์˜ ํ†ต์‹ 
    • flask์„œ๋ฒ„์™€ ํ†ต์‹ ์„ํ•ด intent๋ฅผ flask์„œ๋ฒ„๋กœ ์ „๋‹ฌ
    • flask ์„œ๋ฒ„์—์„œ ๋ถ„๋ฅ˜ํ•ด์ค€ response๋ฅผ ๋‹ค์‹œ app์œผ๋กœ ์ „๋‹ฌ

๊ตฌํ˜„ํ•œ flask ์ฑ—๋ด‡์„œ๋ฒ„์™€์˜ ํ†ต์‹ 

238176728-3abf57ba-c311-4fba-b3c8-9d48620f0a26

๊ธฐ๋Šฅ ๊ตฌํ˜„(API ์ž‘์„ฑ) ์˜ˆ์‹œ

  • ๋งŒ๋“ค์–ด ๋†“์€ ํ™”๋ฉด๋ณ„ ํ”„๋กœํ† ํƒ€์ž… ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•ด๋‹น ํ™”๋ฉด์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ์ฟผ๋ฆฌ ์ƒ์„ฑ
  • ์ž‘์„ฑํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ SpringBoot ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๊ฐ„๋‹จํ•œ API ์ƒ์„ฑ
  • ์šฐ์„  ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ API ๋ถ€ํ„ฐ ์ž‘์„ฑ
  • Postman์„ ํ†ตํ•ด API ์ž‘๋™ ํ™•์ธ

1.ํšŒ์›๊ฐ€์ž…&๋กœ๊ทธ์ธ(Using JPA, Google FireBase Authentication)

์•ˆ๋“œ๋กœ์ด๋“œ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์žฅ ์‚ฌ์šฉ์„ฑ์ด ์ข‹์€ ๊ตฌ๊ธ€ํŒŒ์ด์–ด๋ฒ ์ด์Šค authentication ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ํšŒ์›๊ฐ€์ž…&๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ ํ•จ

1)Entity

-FireBaseUser(ํŒŒ์ด์–ด๋ฒ ์ด์Šค์— ๋“ฑ๋ก๋œ ์œ ์ €์˜ ์ •๋ณด๋“ค)

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-05-14 แ„‹แ…ฉแ„’แ…ฎ 5 10 54

-FireBaseUserDetail(๋“ฑ๋ก๋œ ์œ ์ €์˜ ์ƒ์„ธํ•œ ์ •๋ณด๋“ค(์ดํ›„ ์ถ”์ฒœ์‹œ์Šคํ…œ์— ํ™œ์šฉ))

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-05-14 แ„‹แ…ฉแ„’แ…ฎ 5 16 50

2) ์ฟผ๋ฆฌ ์ž‘์„ฑ()

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-05-14 แ„‹แ…ฉแ„’แ…ฎ 5 30 09

ํŒŒ์ด์–ด๋ฒ ์ด์Šค๋‹จ ์—์„œ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ์ฃผ๋Š” UID ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„๊ฐ€์ง„ ์œ ์ €,์œ ์ €์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

3) api ๊ตฌํ˜„

-๋ฉ”์ธํ™”๋ฉด(๋กœ๊ทธ์ธ ํ™”๋ฉด์œผ๋กœ ๊ตฌ์„ฑ)

แ„…แ…ฉแ„€แ…ณแ„‹แ…ตแ†ซแ„’แ…ชแ„†แ…งแ†ซ{: width="100" height="100"}

-ํšŒ์›๊ฐ€์ž… แ„’แ…ฌแ„‹แ…ฏแ†ซแ„€แ…กแ„‹แ…ตแ†ธ{: width="100" height="100"}

  1. ํšŒ์›๊ฐ€์ž… ๋ž€์— ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํšŒ์›๊ฐ€์ž…์„ ์‹ค์‹œํ•˜๋ฉด
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-05-14 แ„‹แ…ฉแ„’แ…ฎ 5 12 10

2.ํŒŒ์ด์–ด๋ฒ ์ด์Šค Authentication์— ๋“ฑ๋ก์ด ๋˜๊ณ 

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-05-14 แ„‹แ…ฉแ„’แ…ฎ 5 34 47

3.์•ˆ๋“œ๋กœ์ด๋“œ app ์—์„œ ๊ทธ ์ •๋ณด๋“ค์„ JSON ํ˜•ํƒœ๋กœ ์„œ๋ฒ„๋‹จ์— ๋ณด๋‚ธ๋‹ค

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-05-14 แ„‹แ…ฉแ„’แ…ฎ 5 34 47
  1. ์„œ๋ฒ„์—์„œ๋Š” ๊ทธ ์ •๋ณด๋ฅผ ๋ฐ›์•„ DB์— ์ €์žฅ
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-05-14 แ„‹แ…ฉแ„’แ…ฎ 5 37 13

5.DB์— ์ €์žฅ๋จ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-05-14 แ„‹แ…ฉแ„’แ…ฎ 5 37 58

2.์‹์žฌ๋ฃŒ ๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ(Using jpa)

1)Entity

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ตฌ์กฐ์— ๋งž์ถ”์–ด 3๊ฐœ์˜ ๋ ˆ์‹œํ”ผ ๋ฐ์ดํ„ฐ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•จ

-food list(์ „์ฒด ๋ ˆ์‹œํ”ผ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์šฉ๋„)

Untitled

-recipe_ingredient(์ „์ฒด ๋ ˆ์‹œํ”ผ๋ฆฌ์ŠคํŠธ์—์„œ ์„ ํƒํ•œ ๋ ˆ์‹œํ”ผ์˜ ์žฌ๋ฃŒ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์—”ํ‹ฐํ‹ฐ)

Untitled

id๊ฐ’,์žฌ๋ฃŒ์ด๋ฆ„,์žฌ๋ฃŒ์˜ ์–‘, ์„ ํƒํ•œ ๋ ˆ์‹œํ”ผ์˜ id๊ฐ’์„ ๋‹ด๋Š” ์ด 4๊ฐœ์˜ ํ•„๋“œ๋กœ ๊ตฌ์„ฑ

-recipe_Cooking(์ „์ฒด ๋ ˆ์‹œํ”ผ๋ฆฌ์ŠคํŠธ์—์„œ ์„ ํƒํ•œ ๋ ˆ์‹œํ”ผ์˜ ๋‹จ๊ณ„๋ณ„ ์กฐ๋ฆฌ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์—”ํ‹ฐํ‹ฐ)

Untitled

id๊ฐ’,ํ•ด๋‹น์กฐ๋ฆฌ๋‹จ๊ณ„์—๋Œ€ํ•œ ์„ค๋ช…,์กฐ๋ฆฌ ๋‹จ๊ณ„ ์ˆœ์„œ, ์„ ํƒํ•œ ๋ ˆ์‹œํ”ผ์˜ id๊ฐ’์„ ๋‹ด๋Š” ์ด 4๊ฐœ์˜ ํ•„๋“œ๋กœ ๊ตฌ์„ฑ

2) ์ฟผ๋ฆฌ ์ž‘์„ฑ(Recipedetail์„ ์˜ˆ์‹œ๋กœ)

  • JPQL์„ ์ด์šฉํ•˜์—ฌ id๊ฐ’์„ ์ž…๋ ฅ ํ•˜๋ฉด ํ•ด๋‹นํ•˜๋Š” data๋“ค์„ DB์—์„œ retrieve ํ•ด์คŒ

    แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-04-05 แ„‹แ…ฉแ„’แ…ฎ 3.06.04.png

3) api ๊ตฌํ˜„

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์„œ๋ฒ„๊ฐ„ ํ†ต์‹ ๊ณผ์ •์—์„œ์˜ ํ”„๋กœํ† ์ฝœ์„ json๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ transferํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ •ํ•จ

-Recipetoapp Controller

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-04-05 แ„‹แ…ฉแ„’แ…ฎ 3.10.22.png

์•ˆ๋“œ๋กœ์ด๋“œ app ์—์„œ api access point๋ฅผ http://ec2-43-200-41-187.ap-northeast-2.compute.amazonaws.com:8080/android/recipeCooking

์œผ๋กœ ์„ค์ •ํ•˜๊ณ  parameter์„ โ€œid=1(ex) ๋กœ ์„ค์ •ํ•˜๊ณ  request๋ฅผ ๋ณด๋‚ด๋ฉด

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-04-05 แ„‹แ…ฉแ„’แ…ฎ 8.59.30.png

Untitled

์œ„์™€๊ฐ™์ด mysql๋กœ ์ž‘์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ชจ๋“  ๋ ˆ์‹œํ”ผ์˜ ์ •๋ณด๋“ค์„ jpa์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ฐ€์ ธ์™€ ์•„๋ž˜์™€ ๊ฐ™์€ jsonArrayํ˜•ํƒœ๋กœ ๋ฆฌํ„ดํ•ด ์ค€๋‹ค.

{
	"recipe_list":
	[
		{"ID": "0", "Name":"๋ผ๋ฉด","imgsrc":"img1"},
		{"ID": "1", "Name":"์งฌ๋ฝ•","imgsrc":"img2"}
	]
}

-๋‹ค์Œ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์—์„œ ์ž์‹ ์˜ ๋ ˆ์‹œํ”ผ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ ˆ์‹œํ”ผ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋„๋ก API๊ฐœ๋ฐœ ํ•˜์˜€๋‹ค

Untitled

์‚ฌ์šฉ์ž๊ฐ€ ์œ„์˜ ํ™”๋ฉด์—์„œ ๋ ˆ์‹œํ”ผ์˜ ์ •๋ณด๋“ค์„ ์ž…๋ ฅํ•˜๋ฉด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ json์œผ๋กœ ๋ณ€ํ™˜๋œ ์ •๋ณด๋“ค์ด parameter๋กœ Access Point http://ec2-43-200-41-187.ap-northeast-2.compute.amazonaws.com:8080/android/saveRecipe ๋กœ post์š”์ฒญ๋จ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-04-05 แ„‹แ…ฉแ„’แ…ฎ 9.07.12.png

api์„œ๋ฒ„๋กœ ๋„˜๊ฒจ์ ธ์˜จ recipe์ •๋ณด๋“ค์€ jpa์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—์ €์žฅ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-04-05 แ„‹แ…ฉแ„’แ…ฎ 9.08.51.png

3.์ฑ—๋ด‡ ์„œ๋ฒ„(Python Flask ์„œ๋ฒ„)์™€ ํ†ต์‹  API

์•ˆ๋“œ๋กœ์ด๋“œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ถ€๋‹ด์„ ์ค„์ด๊ธฐ ์œ„ํ•ด

๋ ˆ์‹œํ”ผ ์Œ์„ฑ์ œ์–ด ๋ถ€๋ถ„์˜ http ํ†ต์‹ ์„

์•ˆ๋“œ๋กœ์ด๋“œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

{โ€chat_requestโ€:โ€1โ€}

โ†“

์ž๋ฐ” ์Šคํ”„๋ง ์„œ๋ฒ„

{โ€chat_requestโ€:โ€1โ€}

โ†“

์ฑ—๋ด‡ ์„œ๋ฒ„(flask)


์ฑ—๋ด‡ ์„œ๋ฒ„(flask)

{"chatString":"์‚ฌ์šฉ์ž ๋ช…๋ น์–ด stt ๊ฒฐ๊ณผ"}

โ†“

์ž๋ฐ” ์Šคํ”„๋ง ์„œ๋ฒ„

{"chatString":"์‚ฌ์šฉ์ž ๋ช…๋ น์–ด stt ๊ฒฐ๊ณผ"}

โ†“

์•ˆ๋“œ๋กœ์ด๋“œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์กฐํ™”ํ•จ

JsontransferController ์—์„œ

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, IOException

3)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;

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages