odata - OData API - 406 不可接受
问题描述
在这里建立 NopCommerce。
有一个有趣的问题:
我正在扩展现有的 API 并添加一个允许从类别中清除图片的方法。下面的代码只是我将要实现的代码。它位于 CtageoryController 中
[HttpPost]
public IActionResult ClearCategoryPictureLinks([FromBody] ODataActionParameters parameters)
{
var categoryId = (int)parameters.FirstOrDefault(x => x.Key == "categoryId").Value;
return Ok(true);
}
我在 API 的路由提供程序中添加了一些更改。两者之间的代码 //... 我加进去了。
public partial class ODataRouteProvider : IRouteProvider
{
public int Priority => 10;
public void RegisterRoutes(IEndpointRouteBuilder routeBuilder)
{
//OData
var serviceProvider = routeBuilder.ServiceProvider;
IEdmModel model = GetEdmModel(serviceProvider);
routeBuilder.Count().Filter().OrderBy().MaxTop(100);
routeBuilder.MapODataRoute("ODataRoute", "odata", model);
routeBuilder.EnableDependencyInjection();
}
private static IEdmModel GetEdmModel(IServiceProvider serviceProvider)
{
var builder = new ODataConventionModelBuilder(serviceProvider);
builder.Namespace = "Default";
builder.EntitySet<Category>("Category");
var category = builder.EntityType<Category>();
builder.EntityType<Category>().Count().Filter().OrderBy().Expand().Select().Page();
//...
var actionCategoryPictureClear = category.Collection.Action("ClearCategoryPictureLinks");
actionCategoryPictureClear.Parameter<int>("categoryId");
actionCategoryPictureClear.Returns<bool>();
actionCategoryPictureClear.Namespace = typeof(Category).Namespace;
//...
var tt = AppDomain.CurrentDomain.GetAssemblies().ToList();
var types = AppDomain.CurrentDomain.GetAssemblies().Where(
x => x.FullName.StartsWith("SevenSpikes")
|| x.FullName.StartsWith("Nop4you")
|| x.FullName.StartsWith("Nop.Services.")
|| (x.FullName.StartsWith("Nop.Plugin.") && !x.FullName.StartsWith("Nop.Plugin.Misc.OData"))
)
.SelectMany(a => a.GetTypes());
builder.Ignore(types.ToArray());
return builder.GetEdmModel();
}
不幸的是,当我从 POST MAN 调用它时,我添加的操作总是返回 406 Not Acceptable 错误结果。
网址:odata/category/ClearCategoryPictureLinks
有什么想法吗?
谢谢!
解决方案
在我重建我的解决方案后,问题就消失了。除了 bin 文件没有在 Visual Studio 中正确更新之外,我不确定真正的原因是什么。
推荐阅读
- java - 从 Spring Boot 1.5 迁移到 2,多个数据源出错
- rx-java - 正确使用 RxJava 移除 Vert.x 回调
- java - Arquillian -> org.jboss.arquillian.container.spi.client.container.DeploymentException:无法部署 test.war
- c# - 如何根据 Unity 中按下的键加速和减速游戏对象?
- php - 使用 jquery ajax 刷新后选择价格选项卡
- java - Java 数据库错误(抽象模式类型未知)
- ios - iOS11 如何在 NavigationBar 中创建联系人详细信息?
- java - 如何从springMVC中的其他控制器中的控制器发送参数?
- image - Flutter - 将图像上传到 Firebase 存储
- python - 改变签名的装饰器是一个糟糕的模式吗?