特定のリンクから呼び出したいアクションがApiControllerにあるので、この単純なルートを作成しました
[Route("Rest/GetName/{name}")]
public IHttpActionResult GetName(string name) {
// cut - code here is trivial but long, I just fill in an object to return as Json code
return Json(myObject);
}
正常に動作しますが、パラメーターをオプションにしたいです。 documentation によると、ルートのパラメータ名の最後に質問ポイントを追加するだけで十分です。
[Route("Rest/GetName/{name?}")]
このように、オプションのパラメーターを指定しないとエラーが発生するため、
.../Rest/GetName/AnyName --> ok
.../Rest/GetName/ --> error (see below)
{"メッセージ": "リクエストURIに一致するHTTPリソースが見つかりませんでした ' https:// localhost/miApp/Rest/GetName '。"、 "MessageDetail": "アクションが見つかりませんでしたリクエストに一致するコントローラ「Rest」。 "}
Web APIでは、null許容型およびクラスの場合でも、オプションの値を明示的に設定する必要があります。
オプションのパラメータにデフォルト値を使用します。
[Route("Rest/GetName/{name?}")]
public IHttpActionResult GetName(string name = null) {
// cut - code here is trivial but long, I just fill in an object to return as Json code
return Json(myObject);
}
そして、ルーティング登録を忘れないでください:
httpConfig.MapHttpAttributeRoutes()
多くの可能な解決策があります:
オプションのパラメータを試してください
[Route("Rest/GetName/{name?}")]
public IHttpActionResult GetName(string name = null) {
// cut - code here is trivial but long, I just fill in an
obj ect to return as
`enter code here`Json code
return Json(myObject);
}
2 .最初にコントローラーにPreFixを設定
[RoutePrefix("api/Rest")]
[Authorize]
public class RestController : ApiController
{
[Route("/GetName/{name}")]
public IHttpActionResult GetName(string name = null)
{
// cut - code here is trivial but long, I just fill in an object
to return as Json code
return Json(myObject);
}
}
3 .ルートのアクション名の前にパラメーターを書き込む
[RoutePrefix("api/Rest")]
[Authorize]
public class RestController : ApiController
{
[Route("{name}/GetName")]
public IHttpActionResult GetName(string name = null)
{
// cut - code here is trivial but long, I just fill in an object
to return as Json code
return Json(myObject);
}
}
うまくいけば、これはあなたがあなたの問題を解決するのに役立つでしょう。ありがとう