【发布时间】:2019-11-06 22:37:41
【问题描述】:
所以我是netcoreapp 的新手,我正试图将我的旧rest api 转换为新的。
问题是我无法使用自定义方法名称和参数。
我只想拥有[HttpGet] 或[HttpPost],然后是动作和参数。
例如
[HttpGet]
public List<string> GetStrings(string firstString, string lastString){
// my code here
}
然后我尝试调用它,它根本不起作用
baseUrl/controller/GetStrings?firstString=test&lastString=test2
查看下面的控制器以了解我的问题
[ApiController]
[Route("api/[controller]")]
public class YoutubeController : ControllerBase, IYoutubeController
{
[HttpPost]
public async Task<YoutubeVideoInfo> GetVideoAsync(string videoId)
{
// my code
}
[HttpGet]
public List<YoutubeItem> Playlist([FromQuery]string playlistId)
{
// My code
}
[HttpGet]
public YoutubeVideoCollection Search(string searchString, int pageSize = 50, string relatedTo = null, VideoSearchType videoSearchType = VideoSearchType.Videos)
{
// my code
}
}
}
我尝试像这样调用搜索,但没有任何运气
https://localhost:44330/Youtube.Manager.Core.API/api/Youtube/Search?searchString=Eminem&pageSize=20&relatedTo=&videoSearchType=Videos
这是我的路由配置
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "api/{controller=Home}/{action=Index}/{id?}"
);
});
我还需要什么其他配置吗?我也不想在我的[HttpGet] 属性中指定任何内容。
在网络框架中,我拥有WebApiConfig,它可以处理这些操作。
netcoreapp里没有类似的吗?
【问题讨论】:
-
删除 [ApiController] 和 Route 部分,从那里您可以将 Route 属性添加到您的方法中
-
是的,但这正是我不想要的。当我有控制器动作和参数时,mvc 应该知道该怎么做,因为没有冲突吧?
标签: c# rest asp.net-core routing