保持REST API调用状态

时间:2015-11-27 12:36:04

标签: javascript jquery ajax api rest

我正在使用HTML客户端的两个REST API。

  1. 第一个用于身份验证的REST API调用
  2. getdata的第二个REST API调用
  3. 在Chrome Advance REST CLIENT中,它可以正常运行。但是当我从HTML调用这两个API时,ajax调用第二个getdata api将不会给我数据。

    根据我的说法,每次有新呼叫时使用ajax呼叫,因此两次呼叫之间不保持状态。

    那我怎样才能从我的网络客户端使用这个休息api?

    我的代码:

        //DO AUTHENTICATION for all other API
    
        $.ajax({
        url: 'https://example.com/AuthorizationCheck.svc/AuthorizationCheck?Credentials=xyz',
    
        success: function (data) {
            json = data;
    
            debugger;
        },
        error: function (data) {
            debugger;
        },
    
    });
    
            //GET API
            $.ajax({
            type: "GET",
            url: 'https://example.com/test.svc/Getdata?searchterm=abc',
            success: function (data) {
            //RETURN NULL AS AUTHENTICATION REQUIRED
                debugger;
            },
            error: function (data) {
                debugger;
            },
    
        });
    

2 个答案:

答案 0 :(得分:1)

您还需要在getData调用中传递您的凭据,因为Rest API是无状态的,这意味着您在每个api调用中都有一个新状态。 为了避免在每次通话中输入用户名和密码,您可以覆盖onBeforeSend事件,并对您的用户名和密码进行编码 为了做到这一点,请参考以下内容:

beforeSend: function (request) {
request.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password)); }

可在此处找到更多信息:

http://api.jquery.com/jquery.ajax/

答案 1 :(得分:0)

这实际上取决于您使用的身份验证机制。 如果你使用基本身份验证,那么你需要在每个请求中发送用户名和密码(你也可以对它们进行base64编码并在请求头中发送它们) 如果您使用oAuth / Api密钥,则需要在请求中发送生成的令牌

获取有关您尝试使用哪种API的更多信息将非常有用。