【问题标题】:get specific data from REST API从 REST API 获取特定数据
【发布时间】:2026-01-09 23:10:01
【问题描述】:

我想在用户使用 cookie auth 登录后从 rest api 获取特定数据,但我最终得到字段 'fieldname' 不存在或匿名用户无法查看此字段。

下面可以看到我用ajax和php写的获取数据的代码。我知道我的脚本可能很糟糕,因为我第一次使用 curl 请求所以请耐心等待,我希望有人告诉我我做错了什么或更好地向我解释如何使用 curl 获取并将数据发布到服务器并获取和具体数据显示将不胜感激。

$('#user-profile').click(function(){
        $.ajax({
            type: "POST",
            url: "jiraticket.php",
            data: $('#login-form').serialize(),
            success: function(data){
                alert(data);
            }
        });
    });

这是脚本

    <?php
session_start();


  $url = 'http://base-url/rest/api/2/search?jql=issuetype%20=%20Epic%20AND%20status%20in%20(%22In%20Progress%22,%20Backlog,%20%22On%20hold%22,%20%22To%20Do%22)';
  $curl_session = curl_init($url);
  curl_setopt($curl_session, CURLOPT_HEADER, 0);
  curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, true);

    if(isset($_COOKIE['JSESSIONID']))
    $cookie_string='JSESSIONID='.$_COOKIE['JSESSIONID'];
    else
    $cookie_string="";



    curl_setopt($curl_session, CURLOPT_HTTPHEADER, array('Content-Type: application/json' ,'Authorization: Cookie'), array('cookie:'.$cookie_string));

   $response = curl_exec($curl_session);

   curl_close($curl_session);



   if ( !$response ) {
       die('Nothing was returned.');
   }


   $result = json_decode($response, true);

   print_r($result);

【问题讨论】:

  • 你能把 $response 里面的内容和 print_r($result) 返回的内容贴出来吗?
  • $result 打印数组和 $response 打印 "errorMessages":["Field 'issuetype' 不存在或匿名用户无法查看此字段。"],"errors":{}} @鲍里斯克

标签: php ajax rest jira-rest-api


【解决方案1】:

$response 打印 "errorMessages":["Field 'issuetype' 不存在 否则匿名用户无法查看此字段。"]

嗯,这意味着 API 不想给你 issuetype 的值。

可能是拼写错误或其他问题,但这不是您的 curl 调用的错误,而是 API 提供程序的问题

【讨论】:

  • 但是当我调用以在不同的脚本中获取用户名和电子邮件地址时,它按预期返回了结果,那么为什么现在它被拒绝了?我认为这与我的 cookie 身份验证有关,可能我没有将 jira 会话 ID 传递给服务器以正确验证我,我不知道