Domino Access Services POST 限制为特定大小

问题描述

最近,我开始使用 Domino Access Services。到目前为止,它工作正常:我可以使用我的 GET 和 POST 请求。 但是我注意到一个问题:当发布一个大字符串时(我假设 100-200kb+),即使之前有其他东西存在,数据字段也会是空的。作为响应,我得到一个状态代码 200。如果我手动将这个大字符串插入到数据字段中,它会被保存。我可以使用 GET 请求访问它,没有任何问题。数据字段来自“富文本”类型。

我的 POST 请求:(我也用 Postman 尝试过;它适用于小字符串)

var largeString = "any large string";
var data = JSON.stringify({
    "description": largeString
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange",function () {
if (this.readyState === 4) {
    console.log(this.responseText);         
                          }
                        });
var unid = "#{javascript:document1.getDocument().getUniversalID();}";
xhr.open("POST","./api/data/documents/unid/" + unid);
xhr.setRequestHeader("content-type","application/json");
xhr.setRequestHeader("x-http-method-override","PATCH");
xhr.setRequestHeader("cache-control","no-cache");              
xhr.send(data);

我想知道:POST 有大小限制吗?我是否会错过较大请求的任何标头?

解决方法

我认为您必须在几个位置更改最大值。

  • 在您服务器的服务器文档(在名称.nsf 中)中,您可以设置发送到服务器的请求内容的最大大小。默认值为 10,000 KB。将其设置为 0 表示没有限制。

    请参阅:服务器文档 > Internet 协议 > HTTP > 右栏底部。

enter image description here

  • 如果您正在使用 Internet 站点文档(您应该使用),请更改“最大 POST 数据”字段。默认也是 10,000 KB。 0 = 无限制。

    请参阅:Internet 站点 > Domino Web Engine >“POST 数据”部分。

enter image description here

  • 最后,在应用程序 (NSF) 的 XSP 属性中,还有一个文件上传的最大大小设置。不确定您是否还需要更改该值,但它可能是相关的。

enter image description here

更改服务器文档中的设置将需要重新启动服务器。

,

根据您的示例,您正在发送以下 JSON 负载:

{
  "description": "any large string"
}

这会写入一个文本字段——而不是一个富文本字段。 Notes 和 Domino 中文本字段的大小肯定有限制。

从技术上讲,您不能使用数据 API 编写 Notes 富文本字段,但可以编写 MIME 字段。尝试发送以下 JSON 负载:

{
  "description": {
    "type": "multipart","content": [
      {
        "contentType": "text/plain","data": "any large string"
      }
    ]
}

这会写入一个包含在 text/plain MIME 字段中的单个 multipart 部分。无论 data 属性的长度如何,它都应该有效。请记住,MIME 字段不是传统的 Notes Rich Text。在大多数情况下,它可以与富文本互换,但这取决于您对数据的处理方式。

警告:我没有尝试在我的示例中发送确切的有效负载,但我 99% 确定它应该可以工作。有关 multipart 数据类型的详细信息,请参阅 Receiving a response body