I'm trying create a simple API and call it from my html. I made something similar earlier today but I can't get this one to work. It just returns a 404 error.
script from HTML
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script>
var uri = 'api/books';
$(document).ready(function () {
$.getJSON(uri)
.done(function (data) {
$.each(data, function (key, item) {
$('<li>', { text: formatItem(item) }).appendTo($('#books'));
});
});
});
api controller
using WebApplication1.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;
namespace WebApplication1.Controllers
{
public class BookController : ApiController
{
[HttpGet]
[Route("api/books")]
public IHttpActionResult ShowAllProducts()
{
var db = new DbSearchQuery();
return Ok(db.LoadBooks());
}
}
}
EDIT:
WebApiConfig.cs
namespace WebApplication1
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
host/api/api/Book. Try to remove your first slugapiin annotation for action method. Well, you can check your requests in browser dev tools so.As of jQuery 1.4, if the JSON file contains a syntax error, the request will usually fail silently