MIDAS Gen API with Python
๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ์ตํ๋ ์ฐจ์์์ Guide์ ๋ด์ฉ์ ๋ชจ๋ ๋ฐ๋ผํ๊ธฐ ํด ๋ณด์๊ธธ ๊ถ์ฅํฉ๋๋ค.
ย
์ด ๋ฌธ์๋ Python์์ MIDAS Gen API๋ฅผ ์๋์ํค๊ธฐ ์ํ ๋ฉ๋ด์ผ์ ๋๋ค.
1. Python ๊ฐ๋ฐํ๊ฒฝ ์ค์
1.1 ์ค์นํ์ผ
์ค์นํ์ผ์ ํ์ด์ฌ ๊ณต์ ์น์ฌ์ดํธ์์ ๋ด๋ ค๋ฐ์ต๋๋ค.
* ์๋์ฐ ์ด์ธ์ OS ํ๊ฒฝ์ ์ํ ์ฌ๋ฌ ์ค์นํ์ผ์ ํ์ธํ ์ ์์ต๋๋ค.
ย
1.2 ํ์ด์ฌ ์ค์น
Python์ ์ค์นํฉ๋๋ค.
์๋ ํธ์ง๊ธฐ๋ ๋ ํธ๋ฆฌํ Python ๊ฐ๋ฐํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
Recommended Code Editors for Python
Visual Studio Code - Visual Studio Code - Code Editing. Redefined
PyCharm - PyCharm: the Python IDE for Professional Developers by JetBrains
(๋ณธ ์ค๋ช ์๋ Visual Studio Code๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋์์ต๋๋ค.)
ย
1.3 ์ถ๊ฐ ๋ชจ๋ ์ค์น
Python์ Request ๋ชจ๋์ ์ค์น ํด์ผ, MIDAS/Gen API๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
Request ๋ชจ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ค์น๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ย
ํ๋ก๊ทธ๋จ ํ๋จ์ ํฐ๋ฏธ๋ ์ฐฝ์ด ๋ณด์ด์ง ์๋๋ค๋ฉด, Menu-Terminal-New Terminal ์ ์ด์ฉํ์ฌ, Terminal ์ฐฝ์ ์คํํฉ๋๋ค. ์๋ ํ ์คํธ๋ฅผ ํฐ๋ฏธ๋ ์ฐฝ์ ๋ถ์ฌ ๋ฃ์ ํ, Enter๋ฅผ ๋๋ฌ์ค๋๋ค.
ย
py -3 -m pip install requests
ย
ย
2. Python์ ์ด์ฉํ์ฌ MIDAS/Gen API ์๋ํด๋ณด๊ธฐ
๊ฐ๋จํ ์์ ๋ฅผ ํตํด ๋์ ๋ฐฉ์์ ์ดํด๋ด ๋๋ค.
์์ ๋ฅผ ์ํ Gen ํด์ํ์ผ์ ์๋ test.mgb๋ฅผ ์ฐธ๊ณ ํ์ธ์.
2.1 MIDAS/Gen API ์คํํ๊ธฐ
API์ ํต์ ํ๊ธฐ ์ํ Gen์ ๋ค์๊ณผ ๊ฐ์ด ์คํ ๊ฐ๋ฅํฉ๋๋ค.
Python Code
import subprocess
import time
p = subprocess.Popen([r"C:\\midas\\API\\MidasGen.exe", "/API"])
## wait until midas api process ready
time.sleep(10)
MIDAS/Gen ์คํ ํ์ผ์ ๊ฒฝ๋ก๋ ๊ฐ์ ์ฌ์ฉ์์ ๋ง๊ฒ ์์ ํ์ฌ ์ฌ์ฉํฉ๋๋ค.
ํ์ผ ๊ฒฝ๋ก์ \\์ฌ์ฉํจ์ ์ฃผ์!!
ย
2.2 MIDAS/Gen API ๋ฌธ์ ์ด๊ธฐ
MIDAS/Gen์ ์คํ ์ํจ ํ ์ด๋ฏธ ์์ฑ๋ ๋ฌธ์๋ฅผ ์ฌ๋ ๋์์ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
Python Code
import requests
Gen_API_URL = "http://127.0.0.1:10024"
## DOC.OPEN
requests.post(Gen_API_URL + "/doc/open", json={"Argument":"C:\\midas\\api\\model\\test.mgb"})
MIDAS/Gen ํ์ผ์ ๊ฒฝ๋ก๋ ๊ฐ์ ์ฌ์ฉ์์ ๋ง๊ฒ ์์ ํ์ฌ ์ฌ์ฉํฉ๋๋ค.
URL ์ฃผ์๋ API ๋ฅผ ํตํ MIDAS/Gen ์คํ์ ๋์ํ๋ APIServer.exe์์ ํ์ธํ ์ ์์ต๋๋ค.
ย
2.3 MIDAS/Gen API ํด์ ์คํ
๋ถ๋ฌ์จ MIDAS/Gen ํ์ผ์ ํด์์ ์คํํด ๋ณด๊ฒ ์ต๋๋ค.
Python Code
ย
3. ์๋ ๊ฐ๋ฅํ ๋ช ๋ น์ด
3.1 DOC ๋ช ๋ น์ด
DOC ๋ช ๋ น์ด๋ document ๊ด๋ จ ๋ช ๋ น์ด๋ก ์ฃผ๋ก ๋ฌธ์๋ฅผ ์์ฑ/์ด๊ธฐ/๋ซ๊ธฐ ๋ฑ์ ๋์์ ์ ์ดํฉ๋๋ค.
ย
๋ฌธ์ ์ด๊ธฐ : โ/doc/openโ
ย
์ ๋ฌธ์ ์ด๊ธฐ : โ/doc/newโ
ย
๋ฌธ์ ๋ซ๊ธฐ : โ/doc/closeโ
ย
ํด์ ์คํ : โ/doc/analโ
ย
๋ฌธ์ ์ ์ฅ : โ/doc/saveโ
ย
์ ์ด๋ฆ์ผ๋ก ์ ์ฅ : โ/doc/saveasโ
ย
Json ๋ฐ์ดํฐ Import : โ/doc/importโ
ย
Json ๋ฐ์ดํฐ Export : โ/doc/exportโ
ย
3.2 DB ๋ช ๋ น์ด
DB ๋ช ๋ น์ด๋ ๋ฐ์ดํฐ ์ด๋ฆ์ ๋ํ ์์ฒญ์ ๋๋ค. ๊ฐ๊ฐ์ ๋ฐ์ดํฐ ์ด๋ฆ์ ๋ํ์ฌ GET/POST/PUT/DELETE ๋ฉ์๋๊ฐ ๊ตฌํ๋์ด ์์ต๋๋ค.
ย
GET DB Method : ์ด๋ ค์ง ๋ฌธ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค.
ย
์์ 1: ๋ค์ ์์ ์ฝ๋๋ ์ด์ด์ง ๋ฌธ์๋ก๋ถํฐ ๋ชจ๋ Node ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ , ํน์ ํ Node ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
ย
์์ 2: ๋ค์ ์์ ์ฝ๋๋ ์ด์ด์ง ๋ฌธ์๋ก๋ถํฐ ํน์ ํ Node ๋ฒํธ์ ์ ๋ณด๋ง ๋ถ๋ฌ์ต๋๋ค.
ย
ย
POST DB Method : ์ด๋ ค์ง ๋ฌธ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ด๋ฏธ Key๊ฐ ์์ ๊ฒฝ์ฐ ์คํจํฉ๋๋ค.
ย
๋ค์ ์์ ๋ ์ด์ด์ง ๋ฌธ์์ ํน์ Node๋ฅผ ์ถ๊ฐํ๊ณ , Node ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ ์ถ๋ ฅํ๋ ์์ ์ ๋๋ค. (999๋ฒ ๋ ธ๋ ์ถ๊ฐ)
ย
ย
PUT DB Method : ์ด๋ ค์ง ๋ฌธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์กด์ฌํ์ง ์๋ key์ ๋ํ ์์ฒญ ์ ์คํจํฉ๋๋ค.
ย
๋ค์ ์์ ๋ ํน์ ๋ ธ๋์ ์ขํ๋ฅผ ๋ณ๊ฒฝํ๋ ์์ ์ ๋๋ค. (999๋ฒ ๋ ธ๋ ์ขํ ๋ณ๊ฒฝ)
ย
ย
DELETE DB Method : ์ด๋ ค์ง ๋ฌธ์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํฉ๋๋ค. ์กด์ฌํ์ง ์๋ Key์ ๋ํ ์์ฒญ ์ ์คํจํฉ๋๋ค.
ย
์์ 1 : ํน์ Node๋ฅผ ์ญ์ ํ๊ณ , ์ญ์ ๋ Node์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค. (999๋ฒ ๋ ธ๋ ์ญ์ )
ย
ย
3.3 POST ๋ช ๋ น์ด
POST๋ ๋ช ๋ น์ด๋ ํด์ ์คํ ํ ํ์ฒ๋ฆฌ ๊ด๋ จํ ๋ช ๋ น์ด์ ๋๋ค.
ย
๋ฐ๋์ ํด์์ด ์ํ๋ ์ดํ์ ์คํ ๊ฐ๋ฅํฉ๋๋ค.
๊ฒฐ๊ณผ ํ ์ด๋ธ ์์ฒญ : โ/post/tableโ
์์ 1 : ๋ค์ ์์ ๋ ์ด๋ ค์ง ๋ฌธ์์์ ํด์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ Json ํฌ๋งท์ผ๋ก ์ ์ฅํ๋ ์์ ์ ๋๋ค.
ย
ย
3.4 VIEW ๋ช ๋ น์ด
VIEW ๋ช ๋ น์ด๋ ์ด๋ฏธ์ง์ ๊ด๋ จํ ๋ช ๋ น์ด์ ๋๋ค.
ย
Diagram ์์ฒญ : โ/view/captureโ
Diagram์ ์์ฒญํ๊ณ , ์ํ๋ ๊ฒฝ๋ก์ ์ ์ฅํ๋ ์์ ์ ๋๋ค.
ย
ย