【问题标题】:Domino Access Services POST limited to specific sizeDomino Access Services POST 限于特定大小
【发布时间】:2021-07-19 08:38:18
【问题描述】:

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

我的 POST-Request:(我也用 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 是否有大小限制?我会错过任何较大请求的标头吗?

【问题讨论】:

  • 除了对 POST 数据的总体限制之外,富文本字段的每个段落也有 64 kB 的限制,所以也许你会遇到这个问题。我没有尝试通过数据服务更新富文本字段,但我猜你需要 HTML p 标记来指示段落。
  • 我认为它与富文本字段有关。每段的限制将完全解释我的问题。我想将 XML 文件存储在我的数据库中。我可以自定义富文本字段以保存更大的段落,还是有任何替代方法可以保存没有段落/xml 文件的大字符串?
  • 如果您在服务器上安装 OpenNTF Domino API (oda.openntf.org),您可以将数据存储在文本字段中。这些限制为 15 KB,但 OpenNTF Domino API 会自动为您将其序列化为文件附件。但是这样下去,就不能再使用数据服务了,只能自己写了。

标签: post xpages lotus-domino hcl-notes


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 感谢您的回复。我检查了设置,但它们看起来与您的非常相似。我测试了其他东西:如果我在我的数据中添加第二个字符串,它与长字符串相结合:长字符串的数据字段仍然被空字符串覆盖。但是我较小的字符串保存在数据库中。例如:``data = {"description": "longString", "TestField": "shortString"}。所以我猜这不是由大小限制引起的。我是否可能需要更改富文本字段的任何设置?
【解决方案2】:

根据您的示例,您将发送以下 JSON 有效负载:

{
  "description": "any large string"
}

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多