簡體   English   中英

webapi mediatypeformatter文本/ html

[英]webapi mediatypeformatter text/html

使用webapi默認值,我能夠發送和接收JSON數據。 我現在有一個方案,我的api控制器無法區分get操作

  • api / controller?ponumber = ###
  • controller?id = ###(或api / controller / ###)

為了解決這個問題,我使用了ActionNameAttribute

[ActionName("ById")]
public Model Get(PoByIdQuery model)
{
     return repo.Get(model);
}

[ActionName("ByPoNumber")]
public Model Get(PoByNumberQuery model)
{
     return repo.Get(model);
}

這將網址更改為

  • / controller / byponumber?ponumber = ###
  • / controller / byid / ###

現在的問題是,當我檢索該值時,它說沒有格式化程序可用於text / html類型。 如何配置mvc4 / webapi以將json格式化程序用於文本/ html請求? 或者,如何更改呼叫請求以使用json而不是html?

解決

首先,我需要添加路由。 默認情況下,webapi會忽略該操作。 所以我創建了一個包含動作的路線

routes.MapHttpRoute(
    name: "ActionApi",
    routeTemplate: "api/{controller}/{id}/{action}",
    defaults: new { action = "ById", id = RouteParameter.Optional });

下一個問題是行動的論點。 根據這篇文章 復雜類型從正文中獲取,簡單類型從查詢字符串中獲取。 我可以使用[FromUri]覆蓋此行為,並從查詢字符串中提取po編號。

有一個副作用,我現在可以解決。 我必須為{id}提供一個參數。 所以我的網址看起來像這樣

  • / api / controller / _ / bynumber?ponumber = ###

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM