Professional Documents
Culture Documents
Synap Office 연동 API 가이드 200205
Synap Office 연동 API 가이드 200205
목차
1. 새 문서 ··························································································································································································2
2. 문서 열기 ······················································································································································································4
2-2. 로컬 문서 열기··································································································································································6
3. 편집 상태 조회 ···········································································································································································8
4. 에러 페이지··············································································································································································· 10
5. 연동 예제 ··················································································································································································· 11
5-2. 파일 열기·········································································································································································· 12
5-4. 문서 저장·········································································································································································· 14
Synapsoft 1
사이냅 오피스 – API 연동 가이드
1. 새 문서
MS Format의 워드, 셀, 슬라이드 새 문서를 제공하는 API입니다.
[Request]
GET
/api/newDoc.cmd?fileName={filename}&saveUrl= {saveUrl}&userName={userName}&userId
= {userId} HTTP/1.1
Host: api.synapoffice.com
파라미터 타입 설명 필수 기본 값
문서의 제목
fileName String O
encodeURIComponent 적용 필요
문서가 저장 될 위치 지정
saveUrl String O
편집 내용 저장 시 MultipartFile 문서로 젂송
사용자 이름
userName String O
encodeURIComponent 적용 필요
Synapsoft 2
사이냅 오피스 – API 연동 가이드
[Response]
정상적으로 새 문서 요청하는 경우 편집 뷰를 반환합니다.
Synapsoft 3
사이냅 오피스 – API 연동 가이드
2. 문서 열기
MS Format의 워드, 셀, 슬라이드 문서 열기를 제공하는 API입니다.
2-1. URL로 문서 열기
[Request]
GET
/api/openDoc.cmd?fileName={fileName}&saveUrl={saveUrl}&userName={userName}&&userId={user
Id}&downloadFileUrl={downloadFileUrl} HTTP/1.1
Host: api.synapoffice.com
Synapsoft 4
사이냅 오피스 – API 연동 가이드
[Response]
정상적으로 문서 열기를 요청하면 편집 뷰를 반환합니다.
Synapsoft 5
사이냅 오피스 – API 연동 가이드
2-2. 로컬 문서 열기
[Request]
POST
/api/openDoc.cmd?fileName={fileName}&saveUrl={saveUrl}&userName={userName}&userId={userId}
HTTP/1.1
Host: api.synapoffice.com
[sample code]
Synapsoft 6
사이냅 오피스 – API 연동 가이드
[Response]
정상적으로 문서 열기를 요청하면 편집 뷰를 반환합니다.
Synapsoft 7
사이냅 오피스 – API 연동 가이드
3. 편집 상태 조회
문서의 편집상태를 조회합니다.
[Request]
Method : GET or POST (url이 긴 경우 POST 권장)
파라미터 타입 설명 필수 기본 값
[Response]
필드 타입 설명 필수
Synapsoft 8
사이냅 오피스 – API 연동 가이드
[response sample]
{
"success": true,
"message": "editing client list API",
"data": [
{
"hasClients": true,
"clientList": [
{
"docType": "slide",
"userId": "apiUser1",
"userName": "사용자1",
"clientId": "AD410C39-832B-4AA7-8DC0-7A0DBB881D45"
},
{
"docType": "slide",
"userId": "apiUser2",
"userName": "사용자2",
"clientId": "AD410C39-832B-4AA7-8DC0-7A0DBB881D45"
}
],
"docId": "MjZkOWNlZWEtNDJhMS00ZTU1LThlNDItMjIyNDA1MjI1YmM2"
},
{
"hasClients": false,
"clientList": [],
"docId": "testDocId"
}
],
"exception": "",
"resultcode": 0,
"errorCode": 0
}
Synapsoft 9
사이냅 오피스 – API 연동 가이드
4. 에러 페이지
유효하지 않는 인증 키로 API 요청 시 에러 페이지를 반환합니다.
HTTP/1.1 200 OK
Synapsoft 10
사이냅 오피스 – API 연동 가이드
5. 연동 예제
5-1. 새문서 열기
/**
*
* http://{APP_SERVER}/office/{DOC_TYPE}/newDoc.cmd?fileName={FILE_NAME}&saveUrl={SAVE_URL}
* ex)
http://www.wehago.com/office/word/newDoc.cmd?fileName=Untitled.docx&saveUrl=http://www.wehago.com/office/saveDoc.cmd
*/
@RequestMapping("{docType}/newDoc.cmd")
public RedirectView newDoc(
@PathVariable("docType") String docType,
@RequestParam("fileName") String fileName,
@RequestParam("saveUrl") String saveUrl
) throws IOException {
URL url = new URL(String.format("{OFFICE_SERVER}/api/%s/newDoc.cmd?fileName=%s&saveUrl=%s", docType,
URLEncoder.encode(fileName, "UTF-8"), saveUrl));
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setInstanceFollowRedirects(false);
conn.setRequestProperty("OFFICE_USER_ID", "{USER_ID}"); // 사용자 아이디
conn.setRequestProperty("OFFICE_USER_NAME", "{USER_NAME}"); // 사용자 이름
Synapsoft 11
사이냅 오피스 – API 연동 가이드
5-2. 파일 열기
/**
* http://{APP_SERVER}/office/openDoc.cmd?fileName={FILE_NAME}&saveUrl={SAVE_URL} *
* ex)
http://www.wehago.com/office/openDoc.cmd?fileName=testDocument.docx&saveUrl=http://www.wehago.com/office/saveDoc.cmd
*/
@ResponseBody
@RequestMapping(value = "openDoc.cmd")
public RedirectView openDoc(
@RequestParam(value = "fileName", required = false) String orgFileName,
@RequestParam("saveUrl") String saveUrl) throws IOException {
FileInputStream fis = new FileInputStream(new File("{file_path}")); // 스토리지에서 다운로드 받은 파일
String fileName = StringUtils.isEmpty(orgFileName) ? file.getOriginalFilename() : orgFileName;
MultipartEntityBuilder builder = MultipartEntityBuilder.create()
.setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
.setCharset(Charset.forName("UTF-8"))
.addBinaryBody("file", fis, ContentType.APPLICATION_OCTET_STREAM, fileName);
Synapsoft 12
사이냅 오피스 – API 연동 가이드
5-3. 문서 아이디로 열기
/**
* http://{APP_SERVER}/office/openDocByDocId.cmd?docId={DOC_ID}
* ex)
http://www.wehago.com/office/openDocByDocId.cmd?DOC_ID=abcde-12341234-zxvcqwer
*/
@ResponseBody
@RequestMapping("openDocByDocId.cmd")
public RedirectView openDocByDocId(
@RequestParam("docId") String docId
) throws IOException {
URL url = new URL(String.format("{OFFICE_SERVER}/api/openDocByDocId.cmd?docId=%s", docId));
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setInstanceFollowRedirects(false);
Synapsoft 13
사이냅 오피스 – API 연동 가이드
5-4. 문서 저장
/**
* 문서 저장 (오피스에서 저장 버튼 클릭 시 호출되는 페이지)
* 문서 열기 시 젂달할 saveUrl 주소
ex)
http://www.wehago.com/office/saveDoc.cmd
*/
@ResponseBody
@RequestMapping(value = {"/saveDoc.cmd"}, method = RequestMethod.POST)
public String saveOfficeDocument( MultipartHttpServletRequest multipartRequest ) throws IOException {
Map<String, MultipartFile> multiValueMap = multipartRequest.getFileMap();
MultipartFile multipartFile = multiValueMap.values().iterator().next();
String fileName = multipartFile.getOriginalFilename();
File targetFile = new File("/data/" + fileName);
String docId = multipartRequest.getParameter("docId");
String ownerId = multipartRequest.getParameter("ownerId");
try(
InputStream inputStream = multipartFile.getInputStream();
OutputStream outStream = new FileOutputStream(targetFile)
){
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
outStream.write(buffer);
}
return "success";
}
Synapsoft 14