2016-10-04 73 views
-1

我是新来的,学习Web APIWeb API - 如何使用令牌访问API

这是一个示例API,它提供对书籍数据库的访问。

有2个可用的2个数据库样本API操作,比如ABC和XYZ

/api/{abc or xyz}/books这将返回可用

/api/{abc or xyz}/book/{ID}这将返回一本书 的细节要访问该API的书你将需要一个API令牌。

而且就像任何真实世界的API,这些可能有时

我想建立一个web应用程序,让客户得到最便宜的价格从C#中这两个供应商的书是古怪。

提供给您的API令牌不应公开。 供应在头下面令牌以访问API 的x访问令牌:xxxxxxxxxxxxxxxxxxxxxx

我已创建了

public class MoviesController : ApiController 
{ 
Movies[] movies = new Movies[] 
{ 
    new Movies { Id = 1, Name = "Star Wars", Category = "Action", Price = 1 }, 
    new Movies { Id = 2, Name = "Spiderman", Category = "Action", Price = 3.75M }, 
    new Movies { Id = 3, Name = "Bridget Bones", Category = "Comedy", Price = 16.99M } 
}; 

public IEnumerable<Movies> GetAllProducts() 
{ 
    return movies; 
} 

public IHttpActionResult GetProduct(int id) 
{ 
    var movie = movies.FirstOrDefault((p) => p.Id == id); 
    if (movie == null) 
    { 
     return NotFound(); 
    } 
    return Ok(movie); 
} 

}

模型类的控制器与

public class Movies 
{ 
public int Id { get; set; } 
public string Name { get; set; } 
public string Category { get; set; } 
public decimal Price { get; set; } 

}

和我的看法

<body> 
<div> 
<h2>All Movies</h2> 
<ul id="movies" /> 
</div> 
<div> 
<h2>Search by ID</h2> 
<input type="text" id="movieId" size="5" /> 
<input type="button" value="Search" onclick="find();" /> 
<p id="movie" /> 
</div> 

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js">/script> 
<script> 
var uri = 'api/movies'; 
$(document).ready(function() { 
// Send an AJAX request 
$.getJSON(uri) 
    .done(function (data) { 
    // On success, 'data' contains a list of products. 
    $.each(data, function (key, item) { 
     // Add a list item for the product. 
     $('<li>', { text: formatItem(item) }).appendTo($('#movies')); 
    }); 
    }); 
}); 

function formatItem(item) { 
return item.Name + ': $' + item.Price; 
} 

function find() { 
var id = $('#movieId').val(); 
$.getJSON(uri + '/' + id) 
    .done(function (data) { 
    $('#movie').text(formatItem(data)); 
    }) 
    .fail(function (jqXHR, textStatus, err) { 
    $('#movie').text('Error: ' + err); 
    }); 
    } 
    </script> 

我不明白如何使用令牌认证。假设我想在标题中提供以下标记以访问API x-access-token:xxxxxxxxxxxxxxxxxxxxxx我该如何解决它?

任何帮助,将不胜感激。 在此先感谢。

+0

查找到[OAuth2用户](https://www.visualstudio.com/en-ca/docs/integrate/get -started/AUTH/OAuth的)。此外,请求之前做一些研究。 –

回答

0

您可以使用ASP.Net Web API 2和OWIN实现基于令牌的身份验证。

这里是link与分步说明如何实施它。

最好的运气.. !!!

请不要忘记将其标记为“答案”如果它可以帮助你..

+0

感谢您的回复@AKR。我已经通过这个链接是不安静的,我正在寻找。我遇到了这个[link](http://www.primaryobjects.com/2015/05/08/token-based-authentication-for-web-service-apis-in-c-mvc-net/)想要确认如果这个认证是一个正确的方法,我想实现什么?另外我怎样才能比较一本书或电影根据来自不同来源(网站)的ID – coder

+0

这一切都取决于你想达到什么。我不太清楚你的要求,所以我不能推荐哪一个最适合you.But只是几个想法 - 在我发送的链接中,令牌由框架生成,而不是由我们生成。但是您提到的那个,它看起来像我们编写代码来生成令牌。我怀疑我是否理解第二个问题。你在谈论比较两个相同类型的对象(例如:Book1和Book2)吗? – AKR

+0

我不明白如何使用令牌认证。假设我想在标题中提供以下标记以访问API x-access-token:xxxxxxxxxxxxxxxxxxxxxx我该如何解决它?这个程序可以像skyscanner一样工作。您可以从不同的网站(通过API)进行比较,并获取最便宜的票价并将其显示出来。我想建立一个类似的应用程序。我会输入一个ID说5这是电影明星战争的ID,它通过不同的网站(通过API)进行比较,并应该为我提供该电影和显示器的最便宜的价格。这种比较如何发生。 – coder