gpt4 book ai didi

jquery - 如果项目不存在,如何仅发布到 API,但以任何方式返回项目的 ID?

转载 作者:行者123 更新时间:2023-12-01 01:31:08 25 4
gpt4 key购买 nike

我正在向我的 API 发布一个时间表。如果用户选择接收通知,我想将他们的电子邮件存储在一个单独的表中(以规范化的名义!),以便当我对作业进行排队时,我可以引用电子邮件的 ID。

我只想在电子邮件不存在时插入该电子邮件,但将电子邮件 ID 与时间表一起存储在表中。

解决这个问题的最佳方法是什么?我想需要两次单独的调用?

我想我真正需要知道的是,如何 POST 并返回电子邮件地址的现有 ID 或新 ID?

// POST /api/email
[HttpPost]
public IHttpActionResult AddToEmails(EmailDto emailDto)
{
if (!ModelState.IsValid)
return BadRequest();

var email = Mapper.Map<EmailDto, EMAILS>(emailDto);

_context.EMAILS.Add(email);
_context.SaveChanges();

emailDto.ID = email.ID;
return Created(new Uri(Request.RequestUri + "/" + email.ID), emailDto);
}

// POST /api/schedule
[HttpPost]
public IHttpActionResult AddToSchedule(ScheduleDto sequenceDto)
{
if (!ModelState.IsValid)
return BadRequest();

var sequence = Mapper.Map<ScheduleDto, SCHEDULE>(sequenceDto);

_context.SCHEDULE.Add(sequence);
_context.SaveChanges();

sequenceDto.ID = sequence.ID;
return Created(new Uri(Request.RequestUri + "/" + sequence.ID), sequenceDto);
}
<小时/>

编辑:

@Chris Mack,谢谢您的指导。我最终对 API 调用进行了更改,基本上做了同样的事情:

// POST /api/email
[HttpPost]
public IHttpActionResult AddToEmails(EmailDto emailDto)
{
if (!ModelState.IsValid)
return BadRequest();

var email = Mapper.Map<EmailDto, EMAILS>(emailDto);
var emailCheck = _context.EMAILS.SingleOrDefault(
c => c.EMAIL.ToString().ToUpper() == emailDto.EMAIL.ToString().ToUpper()
&& c.TYPE == emailDto.TYPE
);

if (emailCheck == null)
{
_context.EMAILS.Add(email);
_context.SaveChanges();
emailDto.ID = email.ID;
} else
{
emailDto.ID = emailCheck.ID;
}

return Created(new Uri(Request.RequestUri + "/" + emailDto.ID), emailDto);
}

最佳答案

我将有一个存储过程,仅当该项目不存在时才执行 SQL INSERT(使用 IF 语句),然后返回/选择 ID该项目(无论它以前是否存在)。然后,您可以在 POST 调用中将该 ID 作为返回值返回。

关于jquery - 如果项目不存在,如何仅发布到 API,但以任何方式返回项目的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57480525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com