我的 API returns 响应第二次被调用
My API returns response the second time it's called
我正在制作一个简单的 API 端点,它 return 是事件的访问代码。
如果活动没有访问代码,则应为其分配一个。然后,它会检查它当前是 public 还是私人的。如果私有,return访问代码,如果public,return空字符串。
public function getAc($eventId) {
// Pull event
$event = $this->eventService->api->getEventForce($eventId);
// If no access code for the event, generate one and update event record accordingly
if ($event->access_code == null) {
$access_code = $this->generateAccessCode();
$affected = DB::update('update events set access_code = ? where id = ?', [$access_code, $eventId]);
}
// Is the event currently private? return access code
if ($event->privacy=='private') {
return $event->access_code;
}
// Is it public ? return empty string.
else {
return '';
}
}
我的问题是,对于空的私有事件,它仅在第二次调用时 return 提供访问代码(在邮递员上测试过)。这是不恰当的 API 行为。
问题是 $event
对象没有自动更新。
首先你尝试查询一个事件,如果它不存在你创建一个,但是你需要再次查询它。
所以在你的 if ($event->access_code == null) {
部分,最后你需要再次从数据库加载事件:
public function getAc($eventId) {
// Pull event
$event = $this->eventService->api->getEventForce($eventId);
// If no access code for the event, generate one and update event record accordingly
if ($event->access_code == null) {
$access_code = $this->generateAccessCode();
$affected = DB::update('update events set access_code = ? where id = ?', [$access_code, $eventId]);
// Pull event again
$event = $this->eventService->api->getEventForce($eventId);
}
// Is the event currently private? return access code
if ($event->privacy=='private') {
return $event->access_code;
}
// Is it public ? return empty string.
else {
return '';
}
}
希望对您有所帮助
编辑:
我最初的假设是错误的,我认为(出于某种原因)整个记录都丢失了,而您创建了一个新的事件行。那是假的。
无论是否有访问代码,事件记录都应具有 privacy
设置。
我怀疑,你的问题不在这里(在这个 class 中),它应该是逻辑上的其他错误 - 例如 api->getEventForce
没有 return没有访问代码的活动。
尝试在查询后立即打印事件对象;我怀疑这将是一个空结果
我正在制作一个简单的 API 端点,它 return 是事件的访问代码。
如果活动没有访问代码,则应为其分配一个。然后,它会检查它当前是 public 还是私人的。如果私有,return访问代码,如果public,return空字符串。
public function getAc($eventId) {
// Pull event
$event = $this->eventService->api->getEventForce($eventId);
// If no access code for the event, generate one and update event record accordingly
if ($event->access_code == null) {
$access_code = $this->generateAccessCode();
$affected = DB::update('update events set access_code = ? where id = ?', [$access_code, $eventId]);
}
// Is the event currently private? return access code
if ($event->privacy=='private') {
return $event->access_code;
}
// Is it public ? return empty string.
else {
return '';
}
}
我的问题是,对于空的私有事件,它仅在第二次调用时 return 提供访问代码(在邮递员上测试过)。这是不恰当的 API 行为。
问题是 $event
对象没有自动更新。
首先你尝试查询一个事件,如果它不存在你创建一个,但是你需要再次查询它。
所以在你的 if ($event->access_code == null) {
部分,最后你需要再次从数据库加载事件:
public function getAc($eventId) {
// Pull event
$event = $this->eventService->api->getEventForce($eventId);
// If no access code for the event, generate one and update event record accordingly
if ($event->access_code == null) {
$access_code = $this->generateAccessCode();
$affected = DB::update('update events set access_code = ? where id = ?', [$access_code, $eventId]);
// Pull event again
$event = $this->eventService->api->getEventForce($eventId);
}
// Is the event currently private? return access code
if ($event->privacy=='private') {
return $event->access_code;
}
// Is it public ? return empty string.
else {
return '';
}
}
希望对您有所帮助
编辑:
我最初的假设是错误的,我认为(出于某种原因)整个记录都丢失了,而您创建了一个新的事件行。那是假的。
无论是否有访问代码,事件记录都应具有 privacy
设置。
我怀疑,你的问题不在这里(在这个 class 中),它应该是逻辑上的其他错误 - 例如 api->getEventForce
没有 return没有访问代码的活动。
尝试在查询后立即打印事件对象;我怀疑这将是一个空结果