Prerequisites
MIDAS API 실행의 기본사항
API 모드 실행은 실행파일 MidasGen.exe 에 /API 실행 파라미터를 넘기면 됩니다. command 라인에서 실행 하거나 바로가기를 수정해 만들 수 있습니다.
Command 라인에서 실행
바로가기 만들기
바로가기 생성 (우클릭 후 바로가기 만들기)
바로가기 대상에 /API 추가
API 모드로 실행되면 Civil 실행시 다음과 같은 대화상자가 함께 실행 되고 Connected to client … 메세지가 나타나면 정상적으로 실행 된 것입니다.
Gen의 API 모드 동작 구조
/API 를 주어 실행한 결과에서 함께 실행된 창은 API 서버의 로그 창입니다. API를 사용하기 전에 간단히 연결 방식을 이해하면 도움이 될 것 같습니다.
APIServer.exe 가 실행되어 Gen 의 연결을 기다립니다.
Gen 은 실행 되면서 기다리고 있는 APIServer.exe 에 연결합니다.
Restful API를 이용해 통해서 APIServer 에 메세지를 보내면, 연결된 Gen을 제어합니다.
APIServer.exe 가 Gen 과 사용자의 연결 통로 역할을 한다고 생각하면 됩니다. APIServer.exe 는 http 연결을 통해서 Gen을 제어 하도록 도와줍니다.
http 연결은 인터넷 브라우저가 메세지를 주고 받는 형식(프로토콜)입니다. (자세한 내용은 HTTP | MDN (mozilla.org)를 참고) 간단하게 Gen 에서 아무런 모델 파일을 열고 인터넷 브라우저로 http://localhost:10024/db/matl 주소를 입력하면 아래와 비슷하게, 모델의 데이터를 JSON으로 받아보게 됩니다.
이와 같이 API서버에 미리 정의된 규칙에 따라서 명령어를 주고 받으며 Gen을 제어 하게 됩니다. http 메세지는 Python 을 비롯한 여러 프로그래밍 언어를 이용해 주고 받을 수도 있지만, 먼저 이해를 돕기 위해 Postman 이라는 프로그램을 활용해 간단한 연결을 해보도록 하겠습니다.
Postman 을 활용한 간단한 동작
Postman 설치 및 새 명령어 시작
Postman 은 다음 위치에서 다운로드 받아 설치 하실 수 있습니다. https://www.postman.com/downloads/
모델 파일 열기
모델 파일
모델 파일 열기는 다음의 http POST 메세지를 통해 수행 가능합니다.
POST http://localhost:10024/doc/open content-type: application/json { "Argument": "C:\\MIDAS\\API\\Model\\test.mgb" }
위 내용을 Postman에 입력하는 절차는 아래와 같습니다.
http 메소드 타입 선택 (POST)
api URI 입력
http://localhost:10024/doc/open
Content-type 선택
content-type: application/json
Body JSON 데이터 입력
{"Argument": "C:\\MIDAS\\API\\Model\\test.mgb"}
C:\\MIDAS\\API\\Model\\test.mgb → 내 PC에 있는 모델 파일 경로 입력
경로에 \\ 사용 주의!
Send 버튼은 누르면 모델파일이 Open되고 postman 에서 응답을 확인 하실 수 있습니다.
Postman 명령을 collection 에 저장하기 및 순서대로 실행하기
우측 상단의 Save 를 누르면 현재 명령어를 collection 으로 구분하여 저장 할 수 있습니다.
다음과 같이 저장된 명령어를 순서대로 실행 할 수 있습니다.
Postman Reqeust를 collection으로 한번에 실행하기
모델 파일 데이터 가져오기
열린 모델 파일의 데이터는 http GET 메세지를 통해 더 간단하게 가져 올 수 있습니다.
GET http://localhost:10024/db/matl
Postman에 입력 및 응답
데이터 가져오기(postman)
http 메소드 타입 선택 (GET)
api URI 입력
http://localhost:10024/db/matl
모델 파일 데이터 추가하기
앞의 Get 명령어를 통해 가져온 MATL(재질) 데이터를 일부 수정해 새로운 MATL 데이터를 추가 해보도록 하겠습니다.
POST http://localhost:10024/db/matl content-type: application/json { "Assign": { "2": { "TYPE": "STEEL", "NAME": "SS275-ByAPI", "HE_SPEC": 0, "HE_COND": 0, "THMAL_UNIT": "C", "PLMT": 0, "P_NAME": "", "bMASS_DENS": false, "DAMP_RAT": 0.02, "PARAM": [ { "P_TYPE": 1, "STANDARD": "KS18(S)", "CODE": "", "DB": "SS275", "bELAST": false, "ELAST": 210000000 } ] } } }
Postman 에 입력
http 메소드 타입 선택 (POST)
api URI 입력
http://localhost:10024/db/matl
Content-type 선택
content-type: application/json
Body JSON 데이터 입력
앞의 모델 파일 데이터 가져오기에서 결과를 복사하고 붙여넣기
데이터 붙여 넣기 및 수정
데이터 이름 변경 : MATL → Assign
데이터 Key 변경 : “1” → “2”
데이터 이름 변경 : “SS275” → “SS275-ByAPI”
Send 결과 확인
Gen에서 결과 확인
모델 파일 데이터 업데이트
앞의 모델 파일 데이터 추가 와 유사한 방법으로 이번에는 MATL(재질) 데이터를 변경 하도록 하겠습니다.
http 메소드 타입이 POST → PUT 으로 바뀐 부분에 유의 하시면 됩니다.
PUT http://localhost:10024/db/matl content-type: application/json { "Assign": { "2": { "TYPE": "STEEL", "NAME": "SS275-MOD", "HE_SPEC": 0, "HE_COND": 0, "THMAL_UNIT": "C", "PLMT": 0, "P_NAME": "", "bMASS_DENS": false, "DAMP_RAT": 0.02, "PARAM": [ { "P_TYPE": 1, "STANDARD": "KS18(S)", "CODE": "", "DB": "SS275", "bELAST": false, "ELAST": 210000000 } ] } } }
postman 에 입력
http 메소드 타입 선택 (PUT)
api URI 입력
http://localhost:10024/db/matl
Content-type 선택
content-type: application/json
Body JSON 데이터 입력
앞의 입력에서 사용했던 데이터 그대로 붙여넣기
변경하고자 하는 데이터만 변경
SEND 결과 확인
Gen에서 결과 확인
필요한 데이터만 입력해 업데이트
모델 파일 업데이트 시에 중요한 데이터는 변경하고자 하는 데이터임을 고려하면, 업데이트 명령은 많이 단순 해 질 수 있습니다. 앞의 예제와 같지만 실제로 변경 하고자 하는 데이터만을 BODY 데이터에 넣어 동작 하는 방법입니다.
**API 개발 초기에 업데이트에 대한 고려가 없어서, 아직 많은 데이터에서 이런 명령어 방식이 제대로 동작하지 않을 수 있습니다.
PUT http://localhost:10024/db/matl content-type: application/json { "Assign":{ "2": { "NAME": "SS275-SIMPLE" } } }
postman 에 입력
postman matl update simple request
http 메소드 타입 선택 (PUT)
api URI 입력
http://localhost:10024/db/matl
Content-type 선택
content-type: application/json
Body JSON 데이터 입력
Send 결과 확인
postman matl update simple result
Gen 에서 결과 확인
postman matl update simple result Gen
모델 다른 이름으로 저장하기
시작하면서 API로 mcb 파일을 열었던 방식과 유사하게, 모델 파일을 다른 이름으로도 저장 할 수 있습니다.
POST http://localhost:10024/doc/saveas content-type: application/json { "Argument": "C:\\MIDAS\\API\\Model\\test_rename.mgb" }
postman 입력
http 메소드 타입 선택 (POST)
api URI 입력
http://localhost:10024/doc/saveas
Content-type 선택
content-type: application/json
Body JSON 데이터 입력
{"Argument": "C:\\MIDAS\\API\\Model\\test_XXXXXXX.mgb"}
C:\\MIDAS\\API\\Model\\test_XXXXXX.mgb → 내 PC에 있는 경로 입력
경로에 \\ 사용 주의!
Send 결과 확인
Gen 결과 확인
모델 해석 하기
이제 해석 명령어의 형태를 예상할 수 있으실 것 같습니다.
POST http://localhost:10024/doc/anal content-type: application/json {}
postman 입력
http 메소드 타입 선택 (POST)
api URI 입력
http://localhost:10024/doc/anal
Content-type 선택
content-type: application/json
Body JSON 데이터 입력
{}
비어있는 데이터
Body 가 필요 없으면 Get 과 같은데, API 디자인상 Post 가 적절한 것 같아서..
Send 결과 확인