데이터를 파싱해서 객체에 넣어준다.(개꿀)
먼저 NotionClient를 생성해 준다.
코틀린, 자바 둘다 가능하나 일단 자바로 설명을 하겠다.
private NotionClient createClientInDev() {
NotionClient client = new NotionClient();
String internalSecret = notionDevComponent.getInternalSecret();
client.setToken(internalSecret);
return client;
}
client를 만들고 secret 키를 넣었다. 추후 2.0을 사용하면 client.setClientId(), client.setBaseUrl(), client.setRedirectUri() 등 을 이용하여 연결을 만든다.
companion object {
@JvmStatic val defaultBaseUrl: String = "https://api.notion.com/v1"
@JvmStatic val defaultHttpClient: NotionHttpClient = HttpUrlConnNotionHttpClient()
@JvmStatic val defaultLogger: NotionLogger = StdoutLogger()
@JvmStatic val defaultJsonSerializer: NotionJsonSerializer = GsonSerializer()
}
내부 코틀린 매서드를 보니 내부적으로 Gson을 이용해 직렬화를 하는것 같다.
NotionDoc
위 API를 사용해서 먼저 Content부터 불러오려고 한다.
나는 notion-sdk-jvm에 관련된 doc이 없어서 README에 있는 간단한 예제와 디버깅을 이용해 시작했다.
public String retrieveBlocksFromPage(String fullPath) {
Blocks blocks;
String blockId = convertPathToId(fullPath);
NotionClient client = createClientInDev();
RetrieveBlockChildrenRequest retrieveBlockChildrenRequest
= new RetrieveBlockChildrenRequest(blockId);
try {
blocks = client.retrieveBlockChildren(retrieveBlockChildrenRequest);
} finally {
client.close();
}
List<Block> blockedContents = blocks.getResults();
NotionBlockConverter notionBlockConverter = new NotionBlockConverter();
notionBlockConverter.setNotionClient(client);
for (Block blockedContent : blockedContents) {
notionBlockConverter.setType(blockedContent);
notionBlockConverter.doFilter();
}
return notionBlockConverter.toString();
}
Request를 만들어서 client 에게 요청을 보낸다.

요청을 보내면 위와 같이 객체들이 생기는데 이중 blocks를 봐야한다.
노션의 API는 Block 단위로 이루어져 있다. 따라서 Block으로 이름을 지은것 같다 이중 results를 보면 요청에 대한 응답이 있는데 아래처럼 블록들의 List로 넣어준다.

테스트를 위해 여러가지 요소들을 넣어놨다 페이지
테스트가 진행중이므로 중간 중간 요소들이 바뀔수는 있다.
위 요소들의 자세한 내부 사항은 https://developers.notion.com/reference 에 Object를 참고하면 된다.