Mailchimp API Put 或 Patch 使用 Delphi REST

Posted

技术标签:

【中文标题】Mailchimp API Put 或 Patch 使用 Delphi REST【英文标题】:Mailchimp API Put or Patch using Delphi REST 【发布时间】:2020-10-15 02:46:10 【问题描述】:

我有一个程序可以通过 API 连接到 mailchimp 并下载数据,我现在需要能够更新某些电子邮件地址并添加新地址。在 Mailchimp 布局中,我有一个名为

的自定义合并字段

MMMERGE6 是一个文本字段。

我需要能够使用新值更新此字段。

我尝试在 REST 调试器中构建请求,尽管 REST 调试器没有返回错误,但似乎没有发生更新。我在 *** 上的某处发现了一篇文章,它说 mailchimp 存在一个问题,与帖子内容需要放在哪里以及如果它在错误的位置失败有关。

我的代码如下,但我现在非常卡住。


unit mailud;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, REST.Types, Vcl.StdCtrls, REST.Client,
  REST.Authenticator.Basic, Data.Bind.Components, Data.Bind.ObjectScope;

type
  TForm1 = class(TForm)
    RESTClient1: TRESTClient;
    RESTRequest1: TRESTRequest;
    RESTResponse1: TRESTResponse;
    HTTPBasicAuthenticator1: THTTPBasicAuthenticator;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
     Private declarations 
  public
     Public declarations 
  end;

var
  Form1: TForm1;

implementation

$R *.dfm

procedure TForm1.Button1Click(Sender: TObject);
begin

(* For Visibility

RESTRequest1.baseurl:='https://us10.api.mailchimp.com/3.0/lists/dc2af4377f/members/c266cac4b1560b2e88cc893a9a0a1d2c';

*)

(* Trying to Update the Content of Merge_Fields MMERGE6 which is a JSON OBJECT *)
(*  Code from REST Debugger Returns No Errors but update fails *)
(* Note on Stackexchange mentions https://***.com/questions/38388838/mailchimp-api-v3-add-member-to-list-with-merge-fields
*)

RESTRequest1.Method := TRestRequestMethod.rmPUT;
RESTRequest1.Params[0].Value:='merge_fields: "MMERGE6":  "99999999"';
RESTRequest1.AddBody('merge_fields: "MMERGE6":  "99999999"');
restrequest1.Execute;


end;

end.

任何帮助将不胜感激。 谢谢 菲尔

【问题讨论】:

【参考方案1】:

我今天又试了一次,并将请求更改为 Put 请求。

mystring:=' "merge_fields":  "MMERGE6":  "39999999"   ';




restrequest1.Body.Add(mystring);
restrequest1.Execute;

我还对变量名进行了双引号,现在它可以工作了!

我没有尝试过作为 put,因为这样可以实现我想要的结果,即允许我更新记录并插入新记录。

【讨论】:

以上是关于Mailchimp API Put 或 Patch 使用 Delphi REST的主要内容,如果未能解决你的问题,请参考以下文章

我应该在我的 REST API 中使用 PATCH 还是 PUT?

MailChimp:为啥带有 javascript 的 PUT 方法返回“使用 PUT 插入或更新列表成员”

Rest API 设计 PUT vs PATCH

使用 Coldfusion/Railo 向 Mailchimp API v3.0 发送 PUT 请求时出现 401 未经授权的错误

ASP.NET Core Web API - PUT 与 PATCH

我应该同时实现 PUT 和 PATCH 路由吗?