4.5. OpenAPI 통합
4.5.1. 개요 링크 복사링크가 클립보드에 복사되었습니다!
OpenAPI 서비스를 사용하여 CamelContext 파일에서 REST 정의 경로 및 엔드포인트에 대한 API 문서를 생성할 수 있습니다. 이렇게 하려면 Java 기반인 camel-openapi-java
모듈과 함께 Camel REST DSL을 사용합니다. camel-openapi-java
모듈은 CamelContext와 통합된 서블릿을 생성하고 각 REST 끝점에서 정보를 가져와서 JSON 또는 YAML 형식의 API 문서를 생성합니다.
Maven을 사용하는 경우 pom.xml
파일을 편집하여 camel-openapi-java
구성 요소에 대한 종속성을 추가합니다.
4.5.2. OpenAPI를 사용하도록 CamelContext 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel REST DSL에서 OpenAPI를 사용할 수 있도록 apiContextPath()
를 호출하여 OpenAPI 생성 API 문서의 컨텍스트 경로를 설정합니다. 예를 들면 다음과 같습니다.
4.5.3. OpenAPI 모듈 구성 옵션 링크 복사링크가 클립보드에 복사되었습니다!
아래 표에 설명된 옵션을 사용하여 OpenAPI 모듈을 구성할 수 있습니다. 다음과 같이 옵션을 설정합니다.
-
camel-openapi-java
모듈을 서블릿으로 사용하는 경우web.xml
파일을 업데이트하고 설정할 각 구성 옵션에init-param
요소를 지정하여 옵션을 설정합니다. -
Camel REST 구성 요소에서
camel-openapi-java
모듈을 사용하는 경우enableCORS()
,host()
또는contextPath()
와 같은 적절한RestConfigurationDefinition
메서드를 호출하여 옵션을 설정합니다.RestConfigurationDefinition.apiProperty()
메서드를 사용하여api.xxx
옵션을 설정합니다.
옵션 | 유형 | 설명 |
---|---|---|
| 문자열 | API 관련 서신에 사용할 이메일 주소입니다. |
| 문자열 | 연결할 사람 또는 조직의 이름입니다. |
| 문자열 | 자세한 내용은 웹 사이트에 대한 URL입니다. |
| 부울 |
애플리케이션이 두 개 이상의 |
| 문자열 | 컨텍스트 목록에 CamelContext ID를 필터링하는 패턴입니다. 정규식을 지정하고 *를 와일드카드로 사용할 수 있습니다. 이는 Camel Intercept 기능에서 사용하는 것과 동일한 패턴 일치 기능입니다. |
| 문자열 | API에 사용되는 라이센스 이름입니다. |
| 문자열 | API에 사용되는 라이센스의 URL입니다. |
| 문자열 |
문서를 생성할 REST API를 사용할 수 있는 경로를 설정합니다(예: |
| 문자열 | API 서비스 조건에 대한 URL입니다. |
| 문자열 | 애플리케이션 이름입니다. |
| 문자열 | API 버전입니다. 기본값은 0.0.0입니다. |
| 문자열 |
필수 항목입니다. REST 서비스를 사용할 수 있는 경로를 설정합니다. 상대 경로를 지정합니다. 즉, |
| 부울 |
CORS(HTTP 액세스 제어) 활성화 여부입니다. 이렇게 하면 REST API 문서를 보는 경우에만 CORS를 활성화하고 REST 서비스에 액세스할 수 없습니다. 기본값은 false입니다. 이 테이블 뒤에 설명된 대로 |
| 문자열 |
OpenAPI 서비스가 실행 중인 호스트의 이름을 설정합니다. 기본값은 |
| 문자열 |
사용할 프로토콜 체계입니다. 쉼표로 여러 값을 구분합니다(예: |
| 문자열 | OpenAPI 사양 버전. 기본값은 3.0입니다. |
4.5.4. JSON 또는 YAML 출력 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
Camel 3.1부터 camel-openapi-java
모듈은 JSON 및 YAML 형식의 출력을 모두 지원합니다. 원하는 출력을 지정하려면 /openapi.json
또는 /openapi.yaml
을 요청 URL에 추가합니다. 요청 URL이 형식을 지정하지 않으면 camel-openapi-java
모듈은 HTTP Accept 헤더를 검사하여 JSON 또는 YAML을 허용할 수 있는지 여부를 감지합니다. 둘 다 허용되거나 지원되는 것으로 설정되지 않은 경우 JSON은 기본 반환 형식입니다.
4.5.5. 예 링크 복사링크가 클립보드에 복사되었습니다!
Apache Camel 3.x 배포에서 camel-example-openapi-cdi
및 camel-example-
모듈을 사용하는 방법을 보여줍니다.
openapi-java
Apache Camel 2.x 배포판에서 camel-example-swagger-cdi
및 camel-example-swagger-java
모듈은 camel-swagger-java
모듈을 사용하는 방법을 보여줍니다.
4.5.6. OpenAPI에서 생성된 문서 개선 링크 복사링크가 클립보드에 복사되었습니다!
Camel 3.1부터 이름, 설명, 데이터 유형, 매개변수 유형과 같은 매개변수 세부 정보를 정의하여 OpenAPI에서 생성한 문서를 개선할 수 있습니다. XML을 사용하는 경우 이 정보를 추가할 param
요소를 지정합니다. 다음 예제에서는 ID 경로 매개변수에 대한 정보를 제공하는 방법을 보여줍니다.
다음은 Java DSL의 예는 다음과 같습니다.
.get("/{id}").description("Find user by ID.").outType(User.class) .param().name("id").type(path).description("The ID of the user to get information about.").dataType("int").endParam() .to("bean:userService?method=getUser(${header.id})")
.get("/{id}").description("Find user by ID.").outType(User.class)
.param().name("id").type(path).description("The ID of the user to get information about.").dataType("int").endParam()
.to("bean:userService?method=getUser(${header.id})")
이름이 본문인 매개변수를 정의하는 경우 body
를 해당 매개변수 유형으로 지정해야 합니다. 예를 들면 다음과 같습니다.
다음은 Java DSL의 예는 다음과 같습니다.
.put().description("Updates or create a user").type(User.class) .param().name("body").type(body).description("The user to update or create.").endParam() .to("bean:userService?method=updateUser")
.put().description("Updates or create a user").type(User.class)
.param().name("body").type(body).description("The user to update or create.").endParam()
.to("bean:userService?method=updateUser")
Apache Camel 배포에서 examples/camel-example-servlet-rest-tomcat
도 참조하십시오.