다음을 통해 공유


포털 웹 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":"샘플 거래처"}

예를 들어 계정 테이블 집합에 게시된 다음 요청 본문은 계정 생성과 관련하여 계정을 비롯해 총 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");
    }
});

다음 단계

방법: 포털 웹 API 사용

참조 항목