Score:1

ทรัพยากร REST แบบกำหนดเองโยน 404

ธง np

ฉันได้สร้างทรัพยากร REST แบบกำหนดเองเพื่อสร้างรายการโหนดเฉพาะ (ฉันต้องการการตรวจสอบเพิ่มเติม ดังนั้นฉันจึงไม่สามารถใช้ทรัพยากรโหนดที่มีอยู่ได้) เปิดใช้งานจุดสิ้นสุดใน UI อย่างไรก็ตาม เมื่อฉันทำการเรียก POST ไปยังปลายทางที่ /rest/ticketmatic ระบบจะส่งคืน 404 โค้ดต่อไปนี้ในไฟล์ modules/custom/ticketmatic/src/Plugin/rest/resource/Ticketmatic.php

เนมสเปซ Drupal\ticketmatic\Plugin\rest\resource;

ใช้ Drupal\Component\Serialization\Json;
ใช้ Drupal\Core\Datetime\DrupalDateTime;
ใช้ Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface;
ใช้ Drupal\node\Entity\Node;
ใช้ Drupal\rest\Plugin\ResourceBase;
ใช้ Drupal\rest\ResourceResponse;
ใช้ Symfony\Component\HttpFoundation\Request;

/**
 * คำอธิบายประกอบสำหรับวิธีการโพสต์
 *
 * @เรสท์รีซอร์ส(
 * id = "บัตรโดยสาร",
 * ป้ายกำกับ = @Translation("Ticketmatic"),
 * serialization_class = "",
 * uri_paths = {
 * "canonical" = "/rest/ticketmatic",
 * "https://www.drupal.org/link-relations/create" = "/rest/ticketmatic"
 * }
 * )
 */
class Ticketmatic ขยาย ResourceBase {

  /**
   * @param ขอ $request
   *
   * @return ResourceResponse
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   * @throws \Drupal\Core\Entity\EntityStorageException
   */
  โพสต์ฟังก์ชั่นสาธารณะ (ขอ $ คำขอ) {
    $response_status['status'] = เท็จ;
    $params = Json::decode($request->getContent());
    $เขตเวลา = ใหม่ \DateTimeZone('UTC');
    $ข้อมูล = [
      'uid' => 2,
      'type' => 'คอนเสิร์ต',
      'title' => $params['ชื่อเรื่อง'],
      'field_concert_tm_id' => $params['ID'],
      'field_concert_location' => $params['location'],
      'field_concert_ticket_status' => $params['ticket_status'],
      'field_concert_datetime' => DrupalDateTime::createFromTimestamp($params->datetime, $timezone)
        -> รูปแบบ (DateTimeItemInterface::DATETIME_STORAGE_FORMAT)
    ];

    $existingNodes = \Drupal::entityTypeManager()->getStorage('โหนด')
      ->loadByProperties(['field_concert_tm_id' => $params->ID]);

    ถ้า ($node = รีเซ็ต($existingNodes)) {
      $node->set('title', $params->title);
      $node->set('field_concert_location', $params->location);
      $node->set('field_concert_ticket_status', $params->ticket_status);
      $node->set('field_concert_datetime', DrupalDateTime::createFromTimestamp($params->datetime, $timezone)
        -> รูปแบบ (DateTimeItemInterface::DATETIME_STORAGE_FORMAT));
    }
    อื่น {
      $node = โหนด::create($data);
    }

    ถ้า ($node->save()) {
      $response_status['status'] = จริง;
    }

    $response = ใหม่ ResourceResponse($response_status);

    ส่งคืน $response;
  }

}

ฉันกำลังสูญเสียเพราะรหัสที่คล้ายกันทำงานในโครงการอื่น ข้อแตกต่างเพียงอย่างเดียวคือเวอร์ชัน Drupal ที่ใช้จากโครงการนั้น

ความช่วยเหลือ เคล็ดลับ หรือตัวชี้ใด ๆ ที่ชื่นชมอย่างมาก

นี่คือการกำหนดค่าปลายทาง

รหัส: 8551c284-e6e5-4e28-9c39-6b4b4bc8a6d7
รหัสภาษา: nl
สถานะ: จริง
การพึ่งพา:
  โมดูล:
    - พื้นฐาน_auth
    - การทำให้เป็นอนุกรม
    - ตั๋ว
id: Ticketmatic
plugin_id: ตั๋ว
ความละเอียด: ทรัพยากร
การกำหนดค่า:
  วิธีการ:
    - โพสต์
  รูปแบบ:
    - เจสัน
  การรับรองความถูกต้อง:
    - พื้นฐาน_auth
Lambic avatar
ph flag
ได้อย่างรวดเร็วก่อนดูเหมือนว่าควรจะทำงาน คำถามที่ชัดเจนบางข้อ: เปิดใช้งานโมดูลหรือไม่ คุณล้างแคชแล้วหรือยัง มีอะไรที่เกี่ยวข้องในบันทึกหรือไม่? การกำหนดค่าปลายทางที่เปิดใช้งานมีลักษณะอย่างไร
Stephan de Bruin avatar
np flag
เปิดใช้งานโมดูล ล้างแคช ล้างบันทึก (หลายครั้ง) ฉันได้เพิ่มการกำหนดค่าปลายทางในโพสต์ต้นฉบับแล้ว
Lambic avatar
ph flag
ลองเปลี่ยน "https://www.drupal.org/link-relations/create" เป็นเพียง "สร้าง" ลองใช้บริการ request_stack เพื่อรับคำขอแทนที่จะส่งเป็นพารามิเตอร์เพื่อโพสต์ ()
Stephan de Bruin avatar
np flag
ขอบคุณ @Lambic การเปลี่ยนแปลง "สร้าง" คือสิ่งที่แก้ไข

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา