[英]Using [FromUri] and [FromBody] simultaneously to bind a complex Web Api method parameter
[英]Using web API with parameters in JSON with FromUri or FromBody
我正在嘗試使用Web api
創建一個示例。 我想要使用fromuri
或frombody
在JSON中接收到的參數。 創建客戶端時,我想發送包含信息的對象或JSON。
在我的Web API中,我有這個
[HttpPost]
public IHttpActionResult Post([FromUri]Peticion peticion)
{
return Ok(peticion);
}
和我的客戶
Peticion obj = new Peticion();
obj.cliente = 2;
obj.factura = 22;
string DATA = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
var client = new HttpClient();
HttpContent content = new StringContent(DATA, UTF8Encoding.UTF8, "application/json");
HttpResponseMessage message =
client.PostAsync("http://localhost:57418//api/Deudor/",content).Result;
if (message.IsSuccessStatusCode)
{
string result = message.Content.ReadAsStringAsync().Result;
}
但是我需要在我的客戶端中收到JSON。 在Web API中,我需要接收兩個參數(cliente,factura),在我的客戶端中,我需要以JSON接收該客戶端的信息(名稱,發票等)。
我使用郵遞員,並收到了包含信息的JSON。 但是在我的客戶C#中,我做不到。
無論使用.net核心還是框架,都可以使用HttpClient將Get和Post請求發送到您的API。
POST請求:
HttpClient client = new HttpClient();
var content = new StringContent(JsonConvert.SerializeObject(YourObject), Encoding.UTF8, "application/json");
client.PostAsync("your url", content);
然后,您可以獲取內容[FromBody]您可以使用Post請求並從url獲取參數,但在這種情況下,最好使用get。
獲取請求:
HttpClient client = new HttpClient();
client.GetAsync("your url/api/controller/id/{id}");
在這兩種情況下,都需要使用請求類型(GET,POST)為方法設置路由。 例如:在上面的get示例中:
[Route("api/[controller]")
public class SomeController
{
[HttpGet]
[Route("id/{id}")]
public someGetMethod(int id){
//do something with id here...
}
}
在Web API中,如果控制器方法的參數不是“簡單”類型,則它將嘗試從主體獲取值。 因此,我認為您想刪除Post()
參數中的[FromUri]
,因為您實際上是在請求正文中發送該信息。
來源: https : //docs.microsoft.com/zh-cn/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.