Angular - 向 Owin+Web API 控制器发出带参数的 HTTP GET 请求
Angular - Making a HTTP GET request with parameter to Owin+Web API controller not found
我正在尝试向我的 Web API 控制器发出带有 URI 中 ID 的 HTTP GET 请求,但我似乎无法将其用于正确的功能,也无法成功获取 ID:
angular 控制器
$http({
method: 'GET',
url: 'api/Files/Id/' + blobId,
responsetype: 'arraybuffer'
}).then(function successcallback(response) {
console.log(response);
//logic
}, function errorcallback(response) {
});
Startup.cs
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute("DefaultAPI",
"api/{controller}/{id}",
new { id = RouteParameter.Optional });
Web API 控制器
[RoutePrefix("api/Files")]
public class FileController : ApiController
{
// /api/Files/
[Authorize]
[Route("")]
public IHttpActionResult GetAll()
{
}
// /api/Files/Id/
[Authorize]
[Route("Id")]
public async Task<HttpResponseMessage> Get([FromUri] string id)
{
}
}
请求正在返回未找到。 URL 应该是:
url: '../api/Controller/File/' + blobId
或
url:'../api/Controller/File/'
我应该以不同的方式传递 ID 吗?
你写了
...
[RoutePrefix("api/Files")]
public class FileController : ApiController
...
但是在您的 Angular 代码中您使用的是 /api/Controller/File/
还需要写:
...
[Route("{Id}")]
public async Task<HttpResponseMessage> Get([FromUri] string id)
...
而且您不需要输入 controller
您的控制器是 FileController
并且您为它定义了路线 "api/Files"
。
因此您可能必须写 .../api/api/Files/
但我不确定。你得测试一下
您在 $http 服务中使用的 url 是错误的。在您的网络 api 控制器中,您使用以下注释定义路由:
[RoutePrefix("api/Files")]
这是您的控制器的路由。尝试以下操作:
$http({
method: 'GET',
url: '../api/Files/' + blobId,
responsetype: 'arraybuffer'
}).then(function successcallback(response) {
console.log(response);
//logic
}, function errorcallback(response) {
});
我正在尝试向我的 Web API 控制器发出带有 URI 中 ID 的 HTTP GET 请求,但我似乎无法将其用于正确的功能,也无法成功获取 ID:
angular 控制器
$http({
method: 'GET',
url: 'api/Files/Id/' + blobId,
responsetype: 'arraybuffer'
}).then(function successcallback(response) {
console.log(response);
//logic
}, function errorcallback(response) {
});
Startup.cs
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute("DefaultAPI",
"api/{controller}/{id}",
new { id = RouteParameter.Optional });
Web API 控制器
[RoutePrefix("api/Files")]
public class FileController : ApiController
{
// /api/Files/
[Authorize]
[Route("")]
public IHttpActionResult GetAll()
{
}
// /api/Files/Id/
[Authorize]
[Route("Id")]
public async Task<HttpResponseMessage> Get([FromUri] string id)
{
}
}
请求正在返回未找到。 URL 应该是:
url: '../api/Controller/File/' + blobId
或
url:'../api/Controller/File/'
我应该以不同的方式传递 ID 吗?
你写了
...
[RoutePrefix("api/Files")]
public class FileController : ApiController
...
但是在您的 Angular 代码中您使用的是 /api/Controller/File/
还需要写:
...
[Route("{Id}")]
public async Task<HttpResponseMessage> Get([FromUri] string id)
...
而且您不需要输入 controller
您的控制器是 FileController
并且您为它定义了路线 "api/Files"
。
因此您可能必须写 .../api/api/Files/
但我不确定。你得测试一下
您在 $http 服务中使用的 url 是错误的。在您的网络 api 控制器中,您使用以下注释定义路由:
[RoutePrefix("api/Files")]
这是您的控制器的路由。尝试以下操作:
$http({
method: 'GET',
url: '../api/Files/' + blobId,
responsetype: 'arraybuffer'
}).then(function successcallback(response) {
console.log(response);
//logic
}, function errorcallback(response) {
});