스크립팅된 REST API 예제 - 스크립트 샘플
다음 예시에서는 스크립트된 REST API에 대한 다양한 자원 스크립트를 만드는 방법을 보여줍니다.
쿼리 매개변수 GET 예시
이 예제에서는 요청에서 쿼리 매개 변수 값을 가져오는 방법을 보여 줍니다.
/**
* GET - Sample Request API - Query Params
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var uri = request.uri;
var url = request.url;
var queryParams = request.queryParams;
var customHeader = request.getHeader('X-Custom');
return {
"uri": uri,
"url": url,
"queryParams": queryParams,
"customHeader": customHeader
};
})(request, response);
경로 매개변수 예시 가져오기
이 예제에서는 요청에서 경로 매개 변수 값을 가져오는 방법을 보여 줍니다.
/**
* GET - Sample Request API - Path Params
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var uri = request.uri;
var url = request.url;
var path = request.pathParams;
return {
"uri": uri,
"url": url,
"path_params": path,
"path.id": path.id
};
})(request, response);
스크립트 포함 GET 예시
이 예시에서는 스크립트 포함을 사용하여 응답을 제공하는 방법을 보여줍니다. 스크립트 포함을 사용하면 공통 코드를 재사용하고 REST 서비스 스크립트에서 가독성을 유지할 수 있습니다.
/**
* GET - Sample Request API - Script Include
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var responseObj = global.SampleDataUtil.getSampleJSON();
return responseObj;
})(request, response);
문자열 POST 예시
이 예제에서는 문자열 본문으로 POST 메시지를 구문 분석하고 요청에 따라 응답을 보내는 방법을 보여 줍니다.
/**
* POST - Sample Request API - dataString
* sample usage:
* var requestBody = request.body;
* var requestString = requestBody.dataString;
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var requestBody = request.body;
var requestString = requestBody.dataString;
return {"requestString": requestString};
})(request, response);
이진 POST 예제
이 예제에서는 이진 본문을 사용하여 POST 메시지를 구문 분석하고 요청에 따라 응답을 보내는 방법을 보여 줍니다.
/**
* POST - Sample Request API - Body
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var body = request.body.data;
//do any additional processing on the request body, such as inserting a new record.
return {
"body.id": body.id
};
})(request, response);
허용되지 않음 오류 예
이 예제에서는 허용되지 않는 오류에 응답하는 방법을 보여 줍니다. 요청 수락 헤더 값이 웹 서비스에서 지원되지 않는 경우 이 오류 유형을 사용합니다.
/**
* Sample Not Acceptable Error Sample
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
response.setError(new sn_ws_err.NotAcceptableError('sample error message'));
})(request, response);
잘못된 요청 오류 예
이 예제에서는 잘못된 요청 오류에 응답하는 방법을 보여 줍니다. 이 오류 유형을 사용하여 요청 구문에 오류가 있음을 나타냅니다.
/**
* Bad Request Error Sample
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
response.setError(new sn_ws_err.BadRequestError('sample error message'));
})(request, response);
상충 오류 예
이 예제에서는 충돌 오류에 응답하는 방법을 보여 줍니다. 동일한 기록에 대한 여러 업데이트와 같이 상충하는 요청이 여러 개 있는 경우 이 오류 유형을 사용합니다.
/**
* Error Response: Conflict Error Sample
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
response.setError(new sn_ws_err.ConflictError('sample error message'));
})(request, response);
찾을 수 없음 오류 예
이 예제에서는 찾을 수 없는 오류에 응답하는 방법을 보여 줍니다. 요청한 자원이 없거나 사용할 수 없는 경우 이 오류 유형을 사용합니다.
/**
* Error Response: Not Found Error Sample
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
response.setError(new sn_ws_err.NotFoundError('sample error message'));
})(request, response);
지원되지 않는 미디어 유형 오류 예
이 예제에서는 지원되지 않는 미디어 유형 오류에 응답하는 방법을 보여 줍니다. 이 오류 유형을 사용하여 요청의 Content-Type이 지원되지 않음을 나타냅니다.
/**
* Error Response: Unsupported Media Type Error Sample
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
response.setError(new sn_ws_err.UnsupportedMediaTypeError('sample error message'));
})(request, response);
서비스 오류 예
이 예제에서는 일반 서비스 오류에 응답하는 방법을 보여 줍니다. ServiceError 개체를 사용하면 상태 코드, 메시지 및 오류 세부 정보를 정의할 수 있습니다. 미리 정의된 오류 유형이 필요에 맞지 않으면 ServiceError를 사용하십시오.
/**
* Error Response: Custom Error Sample
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var myError = new sn_ws_err.ServiceError();
myError.setStatus(418);
myError.setMessage("I am a Teapot");
myError.setDetail("Here are the details about this error");
response.setError(myError);
})(request, response);
함수 괄호 오류 예
이 예제에서는 함수가 괄호로 래핑되지 않으면 오류가 발생한다는 것을 보여 줍니다. 모든 함수에 괄호를 포함합니다.
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
gs.info("message: {0}", request.body.data.message);
})(request, response);
function test() {
gs.info("test");
}(request, response);
Serialization 오류 예제
이 예제에서는 요청이 응답에 대한 본문으로 설정된 경우 serialization 오류가 발생할 수 있음을 보여 줍니다.
setBody_request:
response.setBody(request);
이 예제에서는 응답이 응답에 대한 본문으로 설정된 경우 serialization 오류가 발생할 수 있음을 보여 줍니다.
setBody_response:
response.setBody(response);
이 예제에서는 요청이 반환되면 serialization 오류가 발생할 수 있음을 보여 줍니다.
return_request:
return request;
이 예제에서는 응답이 반환될 경우 serialization 오류가 발생할 수 있음을 보여 줍니다.
return_response:
return response;
스크립팅된 REST 자원 스크립트 예시
/**
* POST - Sample Request API - Body
*/
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var body = request.body.data,
id0,name0,id1,name1;
name0 = body[0].name; // 'user0'
id0 = body[0].id; // '1234'
name1 = body[1].name; // 'user1'
id1 = body[1].id; // '5678'
return {
"id": id0,
"name": name0,
"id1": id1,
"name1": name1
};
})(request, response);요청
| JSON 요청 | XML 요청 |
|---|---|
|
|
응답
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 04 Aug 2015 15:20:44 GMT
Server: ServiceNow
Connection: close
Set-Cookie: BIGipServerpool_<Instance>=880838154.47166.0000; path=/
{"result":{"id":1234,"id1":5678,"name":"user0","name1":"user1"}}