如何解决类中分配端点上的错误请求?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决类中分配端点上的错误请求?相关的知识,希望对你有一定的参考价值。

[当我调用图形/assigments端点时,收到带有以下消息的错误请求:

找不到段'assignments'的资源。

此相同的代码模式可用于其他端点,例如/teachers/members,但不适用于/assignments

代码:

$getEventsUrlAssignments = '/education/classes/' . $class->getId() . '/assignments';
try 
    $assignments = $graph->createRequest('GET', $getEventsUrlAssignments)
        ->setReturnType(Model\EducationAssignment::class)
        ->execute();
 
catch (\GuzzleHttp\Exception\ClientException $e) 
    dd($e->getResponse()->getBody()->getContents());

我已按照文档中所述添加了正确的权限:

  • EduAssignments.ReadBasic
  • EduAssignments.ReadWriteBasic
  • EduAssignments.Read
  • EduAssignments.ReadWrite

我可能做错了什么?

答案

您收到此错误的原因是/assignments仅在Graph的Beta版中可用。如果尝试使用v1.0调用此端点,则Graph会拒绝请求,并出现以下错误:


    "error": 
        "code": "BadRequest",
        "message": "Resource not found for the segment 'assignments'.",
        "innerError": 
            "request-id": "38df490c-3a2b-4fe8-a77e-a7cce82831b5",
            "date": "2020-02-20T18:46:16"
        
    

为了使用/assignments端点,您需要调用Beta版本:

/beta/education/assignments/

您可以通过setApiVersion告诉SDK使用Beta版:

setApiVersion

您还需要引用Beta模型,因为v1.0中没有用于Assignment的模型。此过程在SDK的Wiki的$graph = new Graph(); $graph ->setBaseUrl("https://graph.microsoft.com/") ->setApiVersion("beta") ->setAccessToken($_SESSION['access_token']); $getEventsUrlAssignments = '/education/classes/' . $class->getId() . '/assignments'; try $assignments = $graph->createRequest('GET', $getEventsUrlAssignments) ->setReturnType(Model\EducationAssignment::class) ->execute(); catch (\GuzzleHttp\Exception\ClientException $e) dd($e->getResponse()->getBody()->getContents()); 下进行了说明。

以上是关于如何解决类中分配端点上的错误请求?的主要内容,如果未能解决你的问题,请参考以下文章

.NET 如何测量请求中分配的字节数?

什么是内存泄露?内存泄露如何解决?

如何在 C++ 中分配类内数组的可修改大小

如何在 TestNG 单元测试类中分配类级别数据

如何在 swift 4 的闭包中分配类属性

如何在 Boost.ASIO 中分配已连接的本机套接字类型 (TCP)