私は、クエリ文字列asp.net web api 2 POSTでクエリ文字列を受け入れる方法はありますか?
http://localhost:53546/api/v1/projects?id=ABA28A61-8898-4739-8464-386C7890E435
で次を投稿しようとしているコントローラを持っているが、それは、コントローラPOST
方法に当たらない
しかし、これは
http://localhost:53546/api/v1/projects/ABA28A61-8898-4739-8464-386C7890E435
投稿でクエリ文字列を受け入れるにはどうすればよいですか?私は504エラーを取得し続けます:メソッドはサポートされていません。 asp.net Web APIでクエリ文字列を受け入れる特別な構文がありますか?ここで
は私のDoPost
方法ここでは私のコントローラ
[RoutePrefix("api/v1/projects")]
public class ProjectController : ApiController
{
private RestClient client;
public ProjectController() {
client = new RestClient("http://localhost:53546");
}
[HttpPost]
[Route("{id:guid}")]
public string Post(Guid id)
{
return "Here is your Post id - " + id.ToString();
}
}
である
public JToken DoRequest(string path, string method, params string[] parameters)
{
if (!path.StartsWith("/"))
{
path = "/" + path;
}
var fullUrl = url + path + ToQueryString(parameters);
if (DebugUrls) Console.WriteLine("Requesting: {0}", fullUrl);
var request = WebRequest.Create(new Uri(fullUrl));
request.Method = method;
request.ContentType = "application/json";
request.ContentLength = 0;
var response = request.GetResponseAsync().Result;
using (var responseStream = response.GetResponseStream())
{
return ReadResponse(responseStream);
}
}
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
あなたのURLはどのルートとも一致しません。なぜあなたはそれが動作すると思いますか? – SLaks
@SLaks上記のクエリ文字列とルートをどのように一致させることができますか? –
'routeTemplate:" api/{controller}/{id} "、' 'id 'はルート内のデフォルトパラメータであると既に定義されているので、** id = ** URL。 –