簡體   English   中英

使用C#的RESTful API調用

[英]RESTful API call using C#

我正在使用提供者提供給我的密鑰和秘密來構建URL以進行API調用。

https://api.testurl.com/api/test/calldata?key=12345&secret=999999&query=hello

我的問題是,我每次都會根據用戶輸入追加“查詢”,並每次都使用“鍵”和“秘密”執行呼叫-在我看來這並不安全。 每次撥打電話時都不會公開密鑰嗎?

public async Task<List<APIResult.Data>> ApiAsync()
{
    using (var client = new HttpClient())
    {
    HttpResponseMessage response = await client.GetAsync(_apiUrlToCall);

    if (!response.IsSuccessStatusCode) return null;
        var result = await response.Content.ReadAsStringAsync();
        var rootResult = JsonConvert.DeserializeObject<APIResult.Rootobject>
        (result);
        return rootResult.Data.ToList();
    }
}

通常,您會在HTTP標頭而不是在查詢字符串中傳遞身份數據(在本例中為您的密鑰和機密)。 這樣一來,它就不會在任何地方記錄日志(例如IIS日志,瀏覽器歷史記錄,被Google,facebook 跟蹤器標記)。

如果您使用的是HTTPS,則應阻止它在其他任何地方公開。

但是可以,因為HTTP是無狀態的 ,所以每次發出請求時都必須發送某種識別數據,無論它是什么,都是秘密密鑰,Kerberos令牌,會話庫奇。

您可以將密鑰和秘密作為Http標頭傳遞。 通常對於rest api,使用authtoken設置Authorization Http Header。 您可以這樣做類似。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM