【发布时间】:2021-06-07 13:24:36
【问题描述】:
我遇到了多个问题。首先是我不知道很多东西叫什么,因为它是一个“你以前从未这样做过,它需要在昨天完成”-项目。
- 我需要创建一个 REST 服务作为 winforms 应用程序的一部分。它需要返回json。没有 html 也没有其他 webstuff,所以我不需要 ASP.Net/Core 开销。
- 我决定使用 OWIN selfhost,因为 Self-Host ASP.NET Web API 被标记为“旧的,请改用 owin”,所以我这样做了。
- 它不是 ASP MVC
什么有效:
- 我让那个东西按照 https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api 和 get/post 等命令都可以工作。
- 我发现关于 SO 的问题向我展示了如何返回结果代码和 json 结构,很好!
我没有开始工作的是那些 ?category=searchterm 的东西。
在旧 API 中 https://docs.microsoft.com/en-us/aspnet/web-api/overview/older-versions/self-host-a-web-api 只需添加这样的方法即可显示它可以工作,我不知道如何,但它看起来像反射魔法这应该由 /api/products/?category=category 调用,在我的情况下,在 OWIN 中它不会.
public IEnumerable<Product> GetProductsByCategory(string category)
{
return products.Where(p => string.Equals(p.Category, category,StringComparison.OrdinalIgnoreCase));
}
我不确定我应该做什么。该文档没有显示有关如何启用它的任何内容。根据我看的地方,它被称为“查询”或“过滤器”,但搜索会导致很多不相关的东西。这叫什么?
感谢您抽出宝贵时间阅读!
【问题讨论】:
-
那些
?category=searchterm被称为query string 和快速谷歌搜索产生this SO Q&A。但我强烈建议您实际使用 ASP.NET Core API 而不是原始 OWIN -
GetProductsByCategory([FromQuery] string category) -
@MindSwipe 我不明白。所以一个普通的 Get 是通过一个 ApiController 类进行反射解析来完成的,而一个带有查询字符串的 Get 的完成方式与某些应用程序配置异步处理程序完全不同?也许是语言障碍,但我不知道如何将 Q&A 答案应用于我的问题。
-
@ChrisPickford System.Web.Http 命名空间中不存在 [FromQuery] 属性,如 [FromBody] 等。这应该适用于 OWIN 还是 ASP.Net?