Web API - 如何使用令牌访问API

时间:2016-10-04 22:24:36

标签: c# rest api web web-applications

我是新手,学习网络apis

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

有两个数据库可用于2个数据库,例如ABC和XYZ

/api/{abc or xyz}/books这会返回可用的图书

/api/{abc or xyz}/book/{ID}这会返回一本书的详细信息 要访问此API,您需要API令牌。

就像任何真实世界的API一样,这些有时可能很有趣

我想建立一个网络应用程序,让客户在C#中获得这两个提供商的书籍最便宜的价格。

提供给您的API令牌不应向公众公开。 在标头中提供以下标记以访问API x-access-token: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我该怎么做呢?

任何帮助将不胜感激。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

以下是link以及如何实施它的分步说明。

最好的运气.. !!!

如果有帮助,请不要忘记将其标记为“答案”..