InterSystems IRIS에서 사양 우선 순위를 사용하여 REST API 개발
기존 코드 우선 API 개발은 다음과 같습니다.
이것은 유리하다. 왜냐하면:
규범을 우선시하는 방식으로 API를 개발합시다!
계획
Docker
첫 번째 단계는 사양을 작성하는 것입니다. InterSystems IRIS는
OpenAPI Specification (formerly Swagger Specification) is an API description format for REST APIs. An OpenAPI file allows you to describe your entire API, including:
- Available endpoints (
/users
) and operations on each endpoint (GET /users
,POST /users
)- Operation parameters Input and output for each operation
- Authentication methods
- Contact information, license, terms of use and other information.
API specifications can be written in YAML or JSON. The format is easy to learn and readable to both humans and machines. The complete OpenAPI Specification can be found on GitHub: OpenAPI 3.0 Specification
Swagger를 사용하여 API를 작성합니다.흔들리는 방법은 다음과 같습니다.
docker run -d -p 8080:8080 swaggerapi/swagger-editor
Local installation
왼쪽에서는 API 사양을 편집하고 오른쪽에서는 렌더링된 API 문서/테스트 도구를 즉시 볼 수 있습니다.
첫 번째 API 사양을 에 로드합니다.이것은 GET 요청 하나만 있는 간단한 API입니다. 지정한 범위의 무작위 수를 되돌려줍니다.
수학 API 사양
swagger: "2.0"
info:
description: "Math"
version: "1.0.0"
title: "Math REST API"
host: "localhost:52773"
basePath: "/math"
schemes:
- http
paths:
/random/{min}/{max}:
get:
x-ISC_CORS: true
summary: "Get random integer"
description: "Get random integer between min and max"
operationId: "getRandom"
produces:
- "application/json"
parameters:
- name: "min"
in: "path"
description: "Minimal Integer"
required: true
type: "integer"
format: "int32"
- name: "max"
in: "path"
description: "Maximal Integer"
required: true
type: "integer"
format: "int32"
responses:
200:
description: "OK"
다음은 그것의 구성 부분이다.API 및 사용된 OAS 버전에 대한 기본 정보
swagger: "2.0"
info:
description: "Math"
version: "1.0.0"
title: "Math REST API"
서버 호스트, 프로토콜(http, https) 및 웹 응용 프로그램 이름:host: "localhost:52773"
basePath: "/math"
schemes:
- http
다음에 경로 (따라서 전체 URL은 YAML) 와 HTTP 요청 방법 (get,post,put,delete) 을 지정합니다.paths:
/random/{min}/{max}:
get:
그런 다음 요청에 대한 정보를 지정합니다. x-ISC_CORS: true
summary: "Get random integer"
description: "Get random integer between min and max"
operationId: "getRandom"
produces:
- "application/json"
parameters:
- name: "min"
in: "path"
description: "Minimal Integer"
required: true
type: "integer"
format: "int32"
- name: "max"
in: "path"
description: "Maximal Integer"
required: true
type: "integer"
format: "int32"
responses:
200:
description: "OK"
이 섹션에서는 다음과 같은 요청을 정의합니다.operationId는 규범에서 인용할 수 있으며 우리의 실현 클래스
생성-응답 형식(예를 들어 텍스트,xml,json)
매개변수URL에서나 본문에서나 입력 매개변수를 지정합니다. 이 예에서는 임의 생성기
응답 가능한 응답 양식 서버 목록
마지막으로 정의를 JSON으로 내보냅니다.분류하여 보존하다→ 변환하여 JSON으로 저장합니다.사양은 다음과 같습니다.
수학 API 사양
{
"swagger": "2.0",
"info": {
"description": "Math",
"version": "1.0.0",
"title": "Math REST API"
},
"host": "localhost:52773",
"basePath": "/math",
"schemes": [
"http"
],
"paths": {
"/random/{min}/{max}": {
"get": {
"x-ISC_CORS": true,
"summary": "Get random integer",
"description": "Get random integer between min and max",
"operationId": "getRandom",
"produces": [
"application/json"
],
"parameters": [
{
"name": "min",
"in": "path",
"description": "Minimal Integer",
"required": true,
"type": "integer",
"format": "int32"
},
{
"name": "max",
"in": "path",
"description": "Maximal Integer",
"required": true,
"type": "integer",
"format": "int32"
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
}
}
}
IRIS에 사양 로드이제 InterSystems IRIS에서 이 REST API에 대한 템플릿 코드를 생성할 수 있는 규범이 생겼습니다.
이 단계에 들어가려면 세 가지가 필요하다.
^%REST
절차(인터랙티브 터미널 세션에서Do ^%REST
,specification.%REST
클래스Set sc = ##class(%REST.API).CreateApplication(applicationName, spec)
, 비교환식documentation.set sc = ##class(%SYS.REST).DeployApplication(restApp, webApp, authenticationType)
. 따라서 저희 사례set sc = ##class(%SYS.REST).DeployApplication("math", "/math")
에서%sySecurity include file에서 authenticationType 파라미터의 값을 가져와야 합니다. 관련 항목은 $$$Authe\*
, 인증되지 않은 접근 허가증$$$AutheUnauthenticated
입니다.생략하면 이 인자는 기본적으로 암호 인증입니다.응용 프로그램을 성공적으로 작성한 경우 세 가지 클래스가 포함된 새 수학 패키지를 작성해야 합니다.
사양 - 기존 스토리지 사양에 따릅니다.
Disp - REST 서비스를 호출할 때 직접 호출합니다.그것은 REST 처리를 포장하고 실현 방법을 호출한다.
Impl - REST 서비스의 실제 내부 구현을 저장합니다.너는 반드시 이런 종류만 편집해야 한다.
구현
처음에 우리의 실시 과정은 수학이었다.impl에는 우리의/random/{min}/{max} 작업에 대응하는 방법만 포함되어 있습니다.
/// Get random integer between min and max<br/>
/// The method arguments hold values for:<br/>
/// min, Minimal Integer<br/>
/// max, Maximal Integer<br/>
ClassMethod getRandom(min As %Integer, max As %Integer) As %DynamicObject
{
//(Place business logic here)
//Do ..%SetStatusCode(<HTTP_status_code>)
//Do ..%SetHeader(<name>,<value>)
//Quit (Place response here) ; response may be a string, stream or dynamic object
}
간단한 구현부터 시작하겠습니다.ClassMethod getRandom(min As %Integer, max As %Integer) As %DynamicObject
{
quit {"value":($random(max-min)+min)}
}
마지막으로 브라우저에서 이 페이지를 열어 REST API: Documentation를 호출할 수 있습니다.출력은 다음과 같아야 합니다.
{
"value": 45
}
또한 Swagger editor에서 Try it out
버튼을 누르고 요청 매개 변수를 입력하면 같은 요청이 전송됩니다.http://localhost:52773/math/random/1/100
축하합니다!우리가 규범에 우선하는 방법으로 만든 첫 번째 REST API가 지금 출시되었습니다!
한층 더 발전하다.
물론 저희 API는 정적이 아닙니다. 새로운 경로를 추가해야 합니다.spec first 개발에서 먼저 규범을 수정한 다음에 REST 프로그램을 업데이트하고 마지막으로 코드를 작성합니다.규범 업데이트는 안전합니다. 코드는 영향을 받지 않습니다. 경로가 규범에서 삭제되었더라도 실현 클래스에서 이 방법은 삭제되지 않습니다.
고려 요소
추가 참고 사항!
특수 매개 변수
InterSystems는 다음과 같이 swagger 사양명세에 특수 매개변수를 추가합니다.
성함
자료형태
약속을 어기다
장소.
묘사
x-ISC_DispatchParent
클래스 이름
%CSP.쉬다
메시지
스케줄러 클래스
x-ISC_CORS
부울 값
거짓
조작하다
이 끝점/메서드 조합을 지원해야 하는 CORS 요청을 나타내는 플래그입니다.
x-ISC 필수 리소스
어레이
조작하다
REST 서비스에 접근하는 이 노드에 필요한 정의된 자원과 접근 모드 (resource: mode) 의 쉼표 구분 목록입니다.예: [%Development:USE]]
x-ISC 서비스 접근 방식
꿰미
조작하다
백엔드에서 이 조작에 서비스를 제공하는 클래스 방법의 이름을 호출합니다.기본값은 operationId이며 일반적으로 적합합니다.
콜스
CORS 지원을 활성화하는 세 가지 방법이 있습니다.
x-ISC\_CORS
를 진으로 지정해 노선을 기반으로 한다.이것이 Math REST API에서 수행한 작업입니다.Parameter HandleCorsRequest = 1;
교과 과정을 재편성하다.그것도 규범이 갱신된 후에 살아남을 수 있다.%CSP.REST
를 실현하고 그곳에서 CORS 처리 논리를 작성하여 모든 API를 기반으로 한다.이 슈퍼클래스를 사용하려면 x-ISC\_DispatchParent
규범에 추가하십시오.마지막으로 다른 개발자에게 배포할 수 있도록 IAM에 사양을 추가합니다.
IAM을 아직 시작하지 않은 경우 를 참조하십시오.REST API는 IAM을 통해 제공되므로 여기서 설명하지 않습니다.InterSystems IRIS 인스턴스가 아닌 IAM을 가리키도록 spec host 및 basepath 매개변수를 수정해야 할 수도 있습니다.
IAM 관리자 포털을 열고 관련 작업공간의 사양 탭으로 이동합니다.
this article
AddSpec 버튼을 클릭하고 새 API의 이름을 입력합니다(예: 수학).IAM에서 새 사양을 작성한 후 를 클릭하여 사양 코드를 편집하고 붙여넣습니다(JSON 또는 YAML - IAM에는 중요하지 않습니다).
클릭 잊지 마세요
Update File
.현재 우리의 API는 개발자를 위해 발표된 것이다.개발자 포털을 열고 오른쪽 상단에 있는 문서를 클릭하세요.세 가지 기본 API 외에 새로운 Math REST API를 제공해야 합니다.
열기:
이제 개발자는 우리의 새로운 API 문서를 보고 같은 곳에서 시도할 수 있습니다!
결론
InterSystems IRIS는 REST API의 개발 과정을 간소화하고 spec first 방법은 REST API의 생명 주기를 더욱 빠르고 쉽게 관리할 수 있도록 한다.이 방법을 사용하면 클라이언트 생성, 셀 테스트, API 관리 및 기타 많은 작업과 관련된 다양한 작업을 수행할 수 있습니다.
링크
Reference
이 문제에 관하여(InterSystems IRIS에서 사양 우선 순위를 사용하여 REST API 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/intersystems/developing-rest-api-with-a-spec-first-approach-in-intersystems-iris-4jbk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)