문서로 건너뛰기
Java

구성

클라이언트의 모든 옵션, 환경에서 읽는 것, 거부하는 것.

옵션

Client.java
OpenEmail client = OpenEmail.builder()    .apiKey(System.getenv("OPENEMAIL_API_KEY"))    .baseUrl("https://api.openemail.uk")    .timeout(Duration.ofSeconds(30))    .maxRetries(2)    .header("X-Team", "billing")    .build(); System.out.println(client.mode());
옵션하는 일
apiKeyoe_live_ 또는 oe_test_로 시작하는 워크스페이스 API 키입니다. 호출에 전달하면 그 호출에서만 다른 키로 동작합니다.
accessToken사용자가 연결한 앱을 위한 OAuth 액세스 토큰입니다. 키와 토큰 중 하나만 전달하세요.
accessToken(Supplier<String>)액세스 토큰을 반환하는 함수입니다. 요청마다 먼저 실행되므로 토큰을 갱신하기에 알맞은 곳입니다.
baseUrlAPI의 오리진입니다. localhost:2222처럼 호스트만 있는 값에는 스킴이 붙습니다.
httpClient프록시, 사용자 지정 SSLContext, 실행기를 쓰기 위한 직접 만든 java.net.http.HttpClient입니다.
timeout한 번의 시도에 걸릴 수 있는 시간입니다. 기본값은 30초이고, 0이면 끄며, 업로드는 최소 10분을 기다립니다.
maxRetries실패한 요청을 다시 시도하는 횟수입니다. 기본값은 2이고, 0이면 한 번만 보냅니다.
userAgentopenemail-java/와 버전으로 이루어진 User-Agent 헤더를 바꿉니다.
header, headers모든 요청에 헤더를 추가합니다.
disableUpdateNotice더 새로운 버전이 나왔다고 알리는 표준 오류의 한 줄을 끕니다. OPENEMAIL_DISABLE_UPDATE_NOTICE=1도 같은 일을 합니다.

생략한 값은 모두 환경에서 읽습니다. OPENEMAIL_API_KEY, 그다음 OPENEMAIL_ACCESS_TOKEN, 그리고 OPENEMAIL_BASE_URL입니다. client.mode()는 키가 live 키인지 test 키인지 알려 줍니다.

호출별 옵션

쿼리 매개변수와 호출 설정은 인수 뒤에 전달하는 RequestOptions에 넣습니다. apiKey, idempotencyKey, timeout, limit, cursor에는 각각 메서드가 있고, set은 그 밖의 옵션을 API가 쓰는 이름으로 받습니다. 각 메서드는 참조 항목에 나열된 옵션을 받고, 해당하지 않는 옵션은 아무것도 보내기 전에 거부됩니다.

AnotherWorkspace.java
RequestOptions options = RequestOptions.of("folder", "inbox")    .apiKey(System.getenv("OPENEMAIL_API_KEY"))    .timeout(Duration.ofSeconds(5))    .limit(50); Page threads = client.threads().list(options); System.out.println(threads.size());

RequestOptions는 불변입니다. 모든 메서드가 새 인스턴스를 반환하므로, 공유하는 값이 거기에 추가하는 코드 때문에 바뀌는 일은 없습니다. 스레드를 인터럽트하면 대기 중인 호출이 멈춥니다.

클라이언트가 거부하는 것

  • oe_live_ 또는 oe_test_로 시작하지 않는 키, 그리고 액세스 토큰과 함께 전달된 키.
  • 일반 http:로 자격 증명을 보내는 것. 단, 서버가 이 컴퓨터의 localhost, 127.x.x.x 주소 또는 ::1에 있으면 예외입니다.
  • 0.0.0.0의 기본 URL. 이는 서버가 수신 대기하는 주소입니다. 같은 포트로 127.0.0.1을 사용하세요.
  • 빈 id 또는 점으로만 이루어진 id. URL 파서가 제거해 버립니다.
  • 리디렉션을 따라가는 것. 기본 HTTP 클라이언트는 리디렉션을 절대 따라가지 않으므로 자격 증명이 다른 호스트로 넘어가지 않습니다.

클라이언트, RequestOptions, 예외를 출력해도 자격 증명은 표시되지 않습니다. 키, 토큰, 사용자 지정 헤더의 값은 toString()에도, 클라이언트가 쓰는 어떤 메시지에도 포함되지 않습니다.

메서드가 없는 엔드포인트

client.raw().request는 클라이언트의 자격 증명, 기본 URL, 타임아웃, 재시도 정책으로 임의의 경로를 호출합니다. 경로는 / 하나로 시작해야 하고, 기본 URL의 오리진을 벗어나는 경로는 거부됩니다.

RawRequest.java
Object label = client.raw().request("POST", "/labels", Body.of("name", "Invoices")); System.out.println(label);