当前位置: 首页 > 知识库问答 >
问题:

在Azure Cosmos DB中使用REST进行CRUD操作

丁弘新
2023-03-14

我正在尝试使用REST在Azure Cosmos DB上执行CRUD操作。根据链接-https://docs.microsoft.com/en-us/rest/api/documentdb/create-a-document,我已经创建了我的有效负载,并试图在Opera浏览器中使用Restman测试它。以下是我的有效载荷详细信息-

报头

Authorization       ***************************

Content-Type        application/query+json

x-ms-date           Tue, 05 Dec 2017 16:49:31 GMT

x-ms-session-token  Session

x-ms-version        2017-02-22

身体

id        sg4c828f-31f8-4db4-8e7c-e8bdff222dsg

value     {     "id": "AndersenFamily",     "LastName": "Andersen",     "Parents": [       {         "FamilyName": null,         "FirstName": "Thomas"       },       {         "FamilyName": null,         "FirstName": "Mary Kay"       }     ],     "Children": [       {         "FamilyName": null,         "FirstName": "Henriette Thaulow",         "Gender": "female",         "Grade": 5,         "Pets": [           {             "GivenName": "Fluffy"           }         ]       }     ],     "Address": {       "State": "WA",       "County": "King",       "City": "Seattle"     },     "IsRegistered": true   }
string GenerateAuthToken(string verb, string resourceType, string resourceId, string date, string key, string keyType, string tokenVersion)
{
    var hmacSha256 = new System.Security.Cryptography.HMACSHA256 { Key = Convert.FromBase64String(key) };

    verb = verb ?? "";
    resourceType = resourceType ?? "";
    resourceId = resourceId ?? "";

    string payLoad = string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}\n{1}\n{2}\n{3}\n{4}\n",
            verb.ToLowerInvariant(),
            resourceType.ToLowerInvariant(),
            resourceId,
            date.ToLowerInvariant(),
            ""
    );

    byte[] hashPayLoad = hmacSha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(payLoad));
    string signature = Convert.ToBase64String(hashPayLoad);

    return System.Web.HttpUtility.UrlEncode(String.Format(System.Globalization.CultureInfo.InvariantCulture, "type={0}&ver={1}&sig={2}",
        keyType,
        tokenVersion,
        signature));
}
GenerateAuthToken("GET", "dbs", "dbs/ToDoList", "Tue, 05 Dec 2017 16:49:31 GMT", PARENT_KEY, "master", "1.0");
https://<account_name>.documents.azure.com:<port>/dbs/DCEAAA==/colls/DCEAAIcEVAA=/docs

共有1个答案

柯甫
2023-03-14

我跟进您提到的Document创建Document API,并做了一个用rest API创建documentdb文档的演示。你可以参考一下。对于其他操作,您可以遵循以下代码并构造散列标记。

根据常见的Azure Cosmos DB REST请求头,如果我们想要创建一个文档,我们需要准备如下的头

Authorization,x-ms-date,Content-Type,x-ms-version

我们可以从这份文件中得到X-M版本。最新版本是2017-02-22。

var databaseId = "databaseName";
var collectionId = "collectionName";
var datetime = DateTime.UtcNow.ToString("R");
var verb = "post";
var resourceType = "docs"; //
var resourceId = $"dbs/{databaseId}/colls/{collectionId}";
var mastKey = "mastkey value";
var keyType = "master";
var tokenVersion = "1.0";
var authToken = GenerateAuthToken(verb, resourceType, resourceId, datetime, mastKey, keyType, tokenVersion);
Post https://{documentDBAccount}.documents.azure.com:443/dbs/{databaseName}/colls/{collectionId}/docs 

请使用以下数据作为json主体

{
    "id": "sg4c828f-31f8-4db4-8e7c-e8bdff222dsg",
    "value": {
        "id": "AndersenFamily",
        "LastName": "Andersen",
        "Parents": [
            {
                "FamilyName": null,
                "FirstName": "Thomas"
            },
            {
                "FamilyName": null,
                "FirstName": "Mary Kay"
            }
        ],
        "Children": [
            {
                "FamilyName": null,
                "FirstName": "Henriette Thaulow",
                "Gender": "female",
                "Grade": 5,
                "Pets": [
                    {
                        "GivenName": "Fluffy"
                    }
                ]
            }
        ],
        "Address": {
            "State": "WA",
            "County": "King",
            "City": "Seattle"
        },
        "IsRegistered": true
    }
}
 类似资料:
  • 响应代码应该是什么,它同时具有创建和更新操作:

  • 我们将在本章中讨论的基本CRUD操作是使用Angular 2从Web服务读取数据。 例子 (Example) 在这个例子中,我们将定义一个数据源,它是一个简单的产品json文件。 接下来,我们将定义一个服务,用于从json文件中读取数据。 然后,我们将在我们的主app.component.ts文件中使用此服务。 Step 1 - 首先让我们在Visual Studio代码中定义我们的product

  • componentWillMount() 在组件将要挂载时被立即调用. 这个调用发生在render()函数执行之前, 所以如果在componentWillMount里面设置了state, 这个设置的state是不会触发重新渲染的. 同样我们也需要注意不要在componentWillMount()中引入其他可能会导致问题的代码. 如果你有类似的需求, 请在componentDidMount里面完成.

  • 问题内容: 我正在尝试使用Swift来对REST API进行GET调用,并且试图遵循众多教程,但无法弄清楚。要么是因为我无法弄清楚如何将所有Obj- C转换为Swift,要么是因为不赞成使用n’这样的方法的一半。有谁知道如何进行调用以及解析返回的JSON数据? 问题答案: 您可以这样做: 编辑:对于对此有疑问的人,也许您的JSON流是数组[]而不是对象{},因此您必须将jsonResult更改为

  • 本文向大家介绍在Java的MyBatis框架中建立接口进行CRUD操作的方法,包括了在Java的MyBatis框架中建立接口进行CRUD操作的方法的使用技巧和注意事项,需要的朋友参考一下 以接口操作的方式编程 一般来讲,我们建立映射SQL接口的类时通常会这样: 这样其实在真正的开发过程中如果两边的名字一不小心没有对应上,就会出现异常。为了避免这样的情况我们可以采取接口的方式来进行相应的操作,下面我

  • 我正在构建一个Spring Boot应用程序,它有几个不同的RESTendpoint。它可以在本地打包并成功地作为jar文件启动。在本地运行时,我可以通过“http://localhost:8080/endpoint?params..”访问它的endpoint。我的任务是现在准备这个应用程序跑出码头工人。仍然在本地机器上工作,我创建了一个基于Java:8映像的Dockers容器。在这个容器中,我已