我正在使用HTML客户端的两个REST API。
在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;
},
});
答案 0 :(得分:1)
您还需要在getData调用中传递您的凭据,因为Rest API是无状态的,这意味着您在每个api调用中都有一个新状态。 为了避免在每次通话中输入用户名和密码,您可以覆盖onBeforeSend事件,并对您的用户名和密码进行编码 为了做到这一点,请参考以下内容:
beforeSend: function (request) {
request.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password)); }
可在此处找到更多信息:
答案 1 :(得分:0)
这实际上取决于您使用的身份验证机制。 如果你使用基本身份验证,那么你需要在每个请求中发送用户名和密码(你也可以对它们进行base64编码并在请求头中发送它们) 如果您使用oAuth / Api密钥,则需要在请求中发送生成的令牌
获取有关您尝试使用哪种API的更多信息将非常有用。