포털 웹 API 쓰기, 업데이트, 삭제 작업 사용
포털에서 사용 가능한 웹 API 작업을 수행할 수 있습니다. 웹 API 작업은 HTTP 요청 및 응답으로 구성됩니다. 이 문서에서는 HTTP 요청에서 사용할 수 있는 샘플 읽기, 업데이트, 삭제 작업, 메서드, URI 및 샘플 JSON을 제공합니다.
중요
- 이 기능이 작동하려면 포털 버전이 9.3.3.x 이상이어야 합니다.
필수 항목
웹 API 작업을 위한 테이블 및 필드를 활성화합니다. 추가 정보: 웹 API에 대한 사이트 설정
포털 웹 API는 테이블 레코드에 액세스하고 연결된 웹 역할을 통해 사용자에게 부여된 테이블 권한을 따릅니다. 올바른 테이블 권한을 구성했는지 확인하십시오. 추가 정보: 웹 역할 만들기
테이블에 레코드 만들기
노트
포털 웹 API를 사용하여 Dataverse 테이블을 참조할 때 EntitySetName을 사용해야 합니다. 예를 들어 account 테이블에 액세스하려면 코드 구문이 accounts의 EntitySetName을 사용합니다.
기본 만들기
작업 | 메서드 | URI | JSON 샘플 |
---|---|---|---|
기본 만들기 | POST | [Portal URI]/_api/accounts | {"name":"샘플 거래처"} |
한 번의 작업으로 관련 테이블 레코드를 만들기 위한 샘플 JSON
예를 들어 계정 테이블 집합에 게시된 다음 요청 본문은 계정 생성과 관련하여 계정을 비롯해 총 4개의 새 테이블을 생성합니다.
- 단일 값 탐색 속성
primarycontactid
의 개체 속성으로 정의되어 있으므로 연락처가 생성됩니다. - 영업 기회는 컬렉션 값 탐색 속성
opportunity_customer_accounts
의 값으로 설정된 배열 내의 개체로 정의되기 때문에 생성됩니다. - 작업은 컬렉션 값 탐색 속성
Opportunity_Tasks
의 값으로 설정된 배열 내의 개체로 정의되기 때문에 생성됩니다.
{
"name": "Sample Account",
"primarycontactid":
{
"firstname": "Alton",
"lastname": "Stott"
},
"opportunity_customer_accounts":
[
{
"name": "Opportunity associated to Sample Account",
"Opportunity_Tasks":
[
{ "subject": "Task associated to opportunity" }
]
}
]
}
생성 시 테이블 레코드 연결
Operation | Method | URI | JSON 샘플 |
---|---|---|---|
생성 시 테이블 레코드 연결 | POST | [Portal URI]/_api/accounts | {"name":"Sample Account","primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"} |
웹 API를 통해 주석을 만들기 위한 샘플 JSON
{
"new_attribute1": "test attribute 1",
"new_attribute2": "test attribute 2",
"new_comments": "test comments",
"new_recordurl": recordURL,
"new_feedback_Annotations":
[
{
"notetext": "Screenshot attached",
"subject": "Attachment",
"filename": file.name,
"mimetype": file.type,
"documentbody": base64str,
}
]
}
documentbody
에는 첨부 파일이 base64 문자열로 포함됩니다.
Web API를 사용하여 레코드 업데이트 및 삭제
기본 업데이트
작업 | 메서드 | URI | JSON 샘플 |
---|---|---|---|
기본 업데이트 | PATCH | [포털 URI]/_api/accounts(00000000-0000-0000-0000-000000000001) | { "name": "Updated Sample Account ", "creditonhold": true, "address1_latitude": 47.639583, "description": "This is the updated description of the sample account", "revenue": 6000000, "accountcategorycode": 2 } |
단일 속성 값 업데이트
작업 | 방법 | URI | JSON 샘플 |
---|---|---|---|
단일 속성 값 업데이트 | PUT | [포털 URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/name | {"value": "Updated Sample Account Name"} |
필드 값 삭제 또는 지우기
Operation | Method | URI |
---|---|---|
필드 값 삭제 또는 지우기 | DELETE | [포털 URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/description |
기본 삭제
작업 | 방법 | URI |
---|---|---|
기본 삭제 | Delete | [포털 URI]/_api/accounts(00000000-0000-0000-0000-000000000001) |
웹 API를 사용하여 테이블 연결 및 연결 해제
컬렉션 값 탐색 속성에 대한 참조를 추가합니다.
작업 | 방법 | URI | JSON 샘플 |
---|---|---|---|
컬렉션 값 탐색 속성에 대한 참조를 추가합니다. | 게시물 | [포털 URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref | {"@odata.id":"[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)"} |
테이블에 대한 참조 제거
작업 | 메서드 | URI |
---|---|---|
테이블에 대한 참조 제거 | DELETE | [포털 URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref?$id=[포털 URI]/_api/opportunities(00000000-0000-0000-0000-000000000001) |
단일 값 탐색 속성에 대한 테이블 참조 제거
단일 값 탐색 속성의 경우, $id 쿼리 문자열 매개 변수를 삭제합니다.
작업 | 메서드 | URI |
---|---|---|
단일 값 탐색 속성에 대한 테이블 참조 제거 | DELETE | [포털 URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref |
단일 값 탐색 속성의 참조 변경
작업 | 방법 | URI | JSON 샘플 |
---|---|---|---|
단일 값 탐색 속성의 참조 변경 | PUT | [포털 URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref | {"@odata.id":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"} |
생성 시 테이블 연결
전체 삽입으로 관계를 사용해 새 테이블을 만들 수 있습니다.
단일 값 탐색 속성을 사용하여 업데이트 시 테이블 연결
이 토픽의 앞부분에 있는 기본 업데이트에 설명된 것과 동일한 메시지를 사용하여 업데이트 시 테이블을 연결할 수 있으나 단일 값 탐색 속성의 값을 설정하는 @odata.bind
주석을 사용해야 합니다. 다음 예는 customerid_account
단일 값 탐색 속성을 사용하여 영업 기회에 연결된 계정을 변경합니다.
단일 값 탐색 속성을 사용하여 업데이트 시 테이블 연결
작업 | 메서드 | URI | JSON 샘플 |
---|---|---|---|
단일 값 탐색 속성을 사용하여 업데이트 시 테이블 연결 | PATCH | [포털 URI]/_api/opportunities(00000000-0000-0000-0000-000000000001) | {"customerid_account@odata.bind":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"} |
Web API AJAX 샘플
이 샘플은 AJAX(Asynchronous JavaScript and XML)를 사용하여 테이블 레코드를 작성, 업데이트 및 삭제하는 방법을 보여줍니다.
래퍼 AJAX 기능
(function(webapi, $){
function safeAjax(ajaxOptions) {
var deferredAjax = $.Deferred();
shell.getTokenDeferred().done(function (token) {
// add headers for AJAX
if (!ajaxOptions.headers) {
$.extend(ajaxOptions, {
headers: {
"__RequestVerificationToken": token
}
});
} else {
ajaxOptions.headers["__RequestVerificationToken"] = token;
}
$.ajax(ajaxOptions)
.done(function(data, textStatus, jqXHR) {
validateLoginSession(data, textStatus, jqXHR, deferredAjax.resolve);
}).fail(deferredAjax.reject); //AJAX
}).fail(function () {
deferredAjax.rejectWith(this, arguments); // on token failure pass the token AJAX and args
});
return deferredAjax.promise();
}
webapi.safeAjax = safeAjax;
})(window.webapi = window.webapi || {}, jQuery)
만들기
webapi.safeAjax({
type: "POST",
url: "/_api/accounts",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample Account"
}),
success: function (res, status, xhr) {
//print id of newly created table record
console.log("entityID: "+ xhr.getResponseHeader("entityid"))
}
});
엽데이트
webapi.safeAjax({
type: "PATCH",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample Account - Updated"
}),
success: function (res) {
console.log(res);
}
});
Delete
webapi.safeAjax({
type: "DELETE",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
연결
다음 예에서는 기존 연락처를 기존 거래처의 기본 연락처로 지정합니다.
var record = {};
record[primarycontactid@odata.bind] = "/contacts(00000000-0000-0000-0000-000000000002)";
webapi.safeAjax({
type: "PATCH",
contentType: "application/json",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
data: JSON.stringify(record),
success: function (data, textStatus, xhr) {
console.log("Record updated");
}
});